﻿2026-06-21T23:42:57.6691767Z ##[group]Run ./traceable-reqs check --json
2026-06-21T23:42:57.6692087Z [36;1m./traceable-reqs check --json[0m
2026-06-21T23:42:57.6704896Z shell: /usr/bin/bash -e {0}
2026-06-21T23:42:57.6705113Z ##[endgroup]
2026-06-21T23:42:57.7685527Z {
2026-06-21T23:42:57.7685884Z   "schemaVersion": 1,
2026-06-21T23:42:57.7686146Z   "summary": {
2026-06-21T23:42:57.7686475Z     "requirementCount": 280,
2026-06-21T23:42:57.7686932Z     "completeCount": 280,
2026-06-21T23:42:57.7687206Z     "incompleteCount": 0,
2026-06-21T23:42:57.7687573Z     "findingCount": 0
2026-06-21T23:42:57.7687912Z   },
2026-06-21T23:42:57.7688203Z   "requirements": [
2026-06-21T23:42:57.7688537Z     {
2026-06-21T23:42:57.7689376Z       "id": "REQ-API-1",
2026-06-21T23:42:57.7689888Z       "title": "api prefix and adapter_name on every machinery invocation",
2026-06-21T23:42:57.7690469Z       "requiredStages": [
2026-06-21T23:42:57.7690828Z         "impl",
2026-06-21T23:42:57.7691133Z         "unit",
2026-06-21T23:42:57.7691428Z         "int"
2026-06-21T23:42:57.7691777Z       ],
2026-06-21T23:42:57.7692068Z       "stages": {
2026-06-21T23:42:57.7692380Z         "doc": {
2026-06-21T23:42:57.7692709Z           "complete": false,
2026-06-21T23:42:57.7693087Z           "evidence": []
2026-06-21T23:42:57.7693440Z         },
2026-06-21T23:42:57.7693755Z         "impl": {
2026-06-21T23:42:57.7694026Z           "complete": true,
2026-06-21T23:42:57.7694322Z           "evidence": [
2026-06-21T23:42:57.7694601Z             {
2026-06-21T23:42:57.7694885Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T23:42:57.7695257Z               "line": 15
2026-06-21T23:42:57.7695529Z             }
2026-06-21T23:42:57.7695777Z           ]
2026-06-21T23:42:57.7696034Z         },
2026-06-21T23:42:57.7696274Z         "int": {
2026-06-21T23:42:57.7696560Z           "complete": true,
2026-06-21T23:42:57.7696879Z           "evidence": [
2026-06-21T23:42:57.7697190Z             {
2026-06-21T23:42:57.7697440Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T23:42:57.7697752Z               "line": 13
2026-06-21T23:42:57.7697944Z             }
2026-06-21T23:42:57.7698119Z           ]
2026-06-21T23:42:57.7698297Z         },
2026-06-21T23:42:57.7698477Z         "unit": {
2026-06-21T23:42:57.7698677Z           "complete": true,
2026-06-21T23:42:57.7698892Z           "evidence": [
2026-06-21T23:42:57.7699193Z             {
2026-06-21T23:42:57.7699635Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T23:42:57.7700020Z               "line": 717
2026-06-21T23:42:57.7700224Z             },
2026-06-21T23:42:57.7700410Z             {
2026-06-21T23:42:57.7700657Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T23:42:57.7701064Z               "line": 804
2026-06-21T23:42:57.7701330Z             }
2026-06-21T23:42:57.7701573Z           ]
2026-06-21T23:42:57.7701802Z         }
2026-06-21T23:42:57.7702042Z       }
2026-06-21T23:42:57.7702274Z     },
2026-06-21T23:42:57.7702502Z     {
2026-06-21T23:42:57.7702761Z       "id": "REQ-API-2",
2026-06-21T23:42:57.7703236Z       "title": "The api subcommand surface (bind/listen/poll/state/worker/boundary/...)",
2026-06-21T23:42:57.7703757Z       "requiredStages": [
2026-06-21T23:42:57.7704042Z         "impl",
2026-06-21T23:42:57.7704291Z         "unit",
2026-06-21T23:42:57.7704558Z         "int"
2026-06-21T23:42:57.7704795Z       ],
2026-06-21T23:42:57.7705024Z       "stages": {
2026-06-21T23:42:57.7705271Z         "doc": {
2026-06-21T23:42:57.7705536Z           "complete": false,
2026-06-21T23:42:57.7705831Z           "evidence": []
2026-06-21T23:42:57.7706089Z         },
2026-06-21T23:42:57.7706328Z         "impl": {
2026-06-21T23:42:57.7706609Z           "complete": true,
2026-06-21T23:42:57.7706914Z           "evidence": [
2026-06-21T23:42:57.7707182Z             {
2026-06-21T23:42:57.7707468Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T23:42:57.7707845Z               "line": 17
2026-06-21T23:42:57.7708129Z             },
2026-06-21T23:42:57.7708394Z             {
2026-06-21T23:42:57.7709100Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T23:42:57.7709462Z               "line": 20
2026-06-21T23:42:57.7709735Z             },
2026-06-21T23:42:57.7709972Z             {
2026-06-21T23:42:57.7710249Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T23:42:57.7710604Z               "line": 142
2026-06-21T23:42:57.7710879Z             },
2026-06-21T23:42:57.7711118Z             {
2026-06-21T23:42:57.7711419Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:42:57.7711790Z               "line": 24
2026-06-21T23:42:57.7712043Z             },
2026-06-21T23:42:57.7712282Z             {
2026-06-21T23:42:57.7712729Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:42:57.7713092Z               "line": 41
2026-06-21T23:42:57.7713367Z             },
2026-06-21T23:42:57.7713602Z             {
2026-06-21T23:42:57.7713892Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:42:57.7714241Z               "line": 213
2026-06-21T23:42:57.7714527Z             },
2026-06-21T23:42:57.7714764Z             {
2026-06-21T23:42:57.7715055Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:42:57.7715418Z               "line": 255
2026-06-21T23:42:57.7715698Z             },
2026-06-21T23:42:57.7715949Z             {
2026-06-21T23:42:57.7716244Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:42:57.7716602Z               "line": 334
2026-06-21T23:42:57.7716869Z             },
2026-06-21T23:42:57.7717122Z             {
2026-06-21T23:42:57.7717442Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:42:57.7717723Z               "line": 397
2026-06-21T23:42:57.7717917Z             },
2026-06-21T23:42:57.7718090Z             {
2026-06-21T23:42:57.7718329Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:42:57.7718612Z               "line": 436
2026-06-21T23:42:57.7718806Z             },
2026-06-21T23:42:57.7719045Z             {
2026-06-21T23:42:57.7719346Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T23:42:57.7719712Z               "line": 17
2026-06-21T23:42:57.7719989Z             },
2026-06-21T23:42:57.7720232Z             {
2026-06-21T23:42:57.7720499Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T23:42:57.7720857Z               "line": 30
2026-06-21T23:42:57.7721118Z             },
2026-06-21T23:42:57.7721358Z             {
2026-06-21T23:42:57.7721641Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T23:42:57.7722007Z               "line": 63
2026-06-21T23:42:57.7722279Z             },
2026-06-21T23:42:57.7722542Z             {
2026-06-21T23:42:57.7722833Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T23:42:57.7723200Z               "line": 77
2026-06-21T23:42:57.7723457Z             }
2026-06-21T23:42:57.7723700Z           ]
2026-06-21T23:42:57.7723932Z         },
2026-06-21T23:42:57.7724171Z         "int": {
2026-06-21T23:42:57.7724438Z           "complete": true,
2026-06-21T23:42:57.7724763Z           "evidence": [
2026-06-21T23:42:57.7725038Z             {
2026-06-21T23:42:57.7725344Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T23:42:57.7725740Z               "line": 14
2026-06-21T23:42:57.7725939Z             },
2026-06-21T23:42:57.7726107Z             {
2026-06-21T23:42:57.7726310Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T23:42:57.7726551Z               "line": 187
2026-06-21T23:42:57.7726752Z             }
2026-06-21T23:42:57.7726928Z           ]
2026-06-21T23:42:57.7727090Z         },
2026-06-21T23:42:57.7727252Z         "unit": {
2026-06-21T23:42:57.7727439Z           "complete": true,
2026-06-21T23:42:57.7727649Z           "evidence": [
2026-06-21T23:42:57.7727824Z             {
2026-06-21T23:42:57.7728020Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T23:42:57.7728264Z               "line": 82
2026-06-21T23:42:57.7728450Z             },
2026-06-21T23:42:57.7728631Z             {
2026-06-21T23:42:57.7729063Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T23:42:57.7729310Z               "line": 279
2026-06-21T23:42:57.7729490Z             },
2026-06-21T23:42:57.7729653Z             {
2026-06-21T23:42:57.7729853Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:42:57.7730095Z               "line": 709
2026-06-21T23:42:57.7730272Z             },
2026-06-21T23:42:57.7730439Z             {
2026-06-21T23:42:57.7730634Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:42:57.7730883Z               "line": 720
2026-06-21T23:42:57.7731073Z             },
2026-06-21T23:42:57.7731236Z             {
2026-06-21T23:42:57.7731541Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:42:57.7731782Z               "line": 873
2026-06-21T23:42:57.7731966Z             },
2026-06-21T23:42:57.7732138Z             {
2026-06-21T23:42:57.7732328Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:42:57.7732563Z               "line": 919
2026-06-21T23:42:57.7732759Z             },
2026-06-21T23:42:57.7732929Z             {
2026-06-21T23:42:57.7733125Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T23:42:57.7733359Z               "line": 143
2026-06-21T23:42:57.7733554Z             },
2026-06-21T23:42:57.7733722Z             {
2026-06-21T23:42:57.7733916Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T23:42:57.7734159Z               "line": 187
2026-06-21T23:42:57.7734347Z             }
2026-06-21T23:42:57.7734507Z           ]
2026-06-21T23:42:57.7734664Z         }
2026-06-21T23:42:57.7734826Z       }
2026-06-21T23:42:57.7734988Z     },
2026-06-21T23:42:57.7735159Z     {
2026-06-21T23:42:57.7735328Z       "id": "REQ-API-3",
2026-06-21T23:42:57.7735570Z       "title": "commune/signoff are file-drops, not commands",
2026-06-21T23:42:57.7735846Z       "requiredStages": [
2026-06-21T23:42:57.7736037Z         "impl",
2026-06-21T23:42:57.7736209Z         "unit",
2026-06-21T23:42:57.7736376Z         "int"
2026-06-21T23:42:57.7736553Z       ],
2026-06-21T23:42:57.7736738Z       "stages": {
2026-06-21T23:42:57.7736919Z         "doc": {
2026-06-21T23:42:57.7737107Z           "complete": false,
2026-06-21T23:42:57.7737317Z           "evidence": []
2026-06-21T23:42:57.7737503Z         },
2026-06-21T23:42:57.7737655Z         "impl": {
2026-06-21T23:42:57.7737841Z           "complete": true,
2026-06-21T23:42:57.7738041Z           "evidence": [
2026-06-21T23:42:57.7738228Z             {
2026-06-21T23:42:57.7738432Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T23:42:57.7738680Z               "line": 27
2026-06-21T23:42:57.7738867Z             },
2026-06-21T23:42:57.7739186Z             {
2026-06-21T23:42:57.7739492Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:42:57.7739880Z               "line": 566
2026-06-21T23:42:57.7762869Z             }
2026-06-21T23:42:57.7763231Z           ]
2026-06-21T23:42:57.7763434Z         },
2026-06-21T23:42:57.7763647Z         "int": {
2026-06-21T23:42:57.7763938Z           "complete": true,
2026-06-21T23:42:57.7764257Z           "evidence": [
2026-06-21T23:42:57.7764538Z             {
2026-06-21T23:42:57.7764858Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T23:42:57.7765249Z               "line": 261
2026-06-21T23:42:57.7765516Z             }
2026-06-21T23:42:57.7765760Z           ]
2026-06-21T23:42:57.7766003Z         },
2026-06-21T23:42:57.7766253Z         "unit": {
2026-06-21T23:42:57.7766525Z           "complete": true,
2026-06-21T23:42:57.7766817Z           "evidence": [
2026-06-21T23:42:57.7767088Z             {
2026-06-21T23:42:57.7767394Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T23:42:57.7767780Z               "line": 280
2026-06-21T23:42:57.7768051Z             },
2026-06-21T23:42:57.7768306Z             {
2026-06-21T23:42:57.7768608Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:42:57.7769064Z               "line": 948
2026-06-21T23:42:57.7769346Z             }
2026-06-21T23:42:57.7769817Z           ]
2026-06-21T23:42:57.7770069Z         }
2026-06-21T23:42:57.7770313Z       }
2026-06-21T23:42:57.7770543Z     },
2026-06-21T23:42:57.7770781Z     {
2026-06-21T23:42:57.7771023Z       "id": "REQ-API-4",
2026-06-21T23:42:57.7773758Z       "title": "api resolves the adapter manifest (+ profile + install dir) from `--adapter name:profile` via the registry when `--manifest` is omitted; `--manifest` becomes an optional OVERRIDE (unregistered / local-dev manifests). Removes the require-both-flags redundancy — a registered adapter's live bringup / digest / capability needs only `--adapter` — and yields the precise install dir (the record's source_dir) rather than the --manifest parent, closing the copy-mode psyche-binary edge (v0.8.0)",
2026-06-21T23:42:57.7776129Z       "requiredStages": [
2026-06-21T23:42:57.7776419Z         "doc",
2026-06-21T23:42:57.7776672Z         "impl",
2026-06-21T23:42:57.7776919Z         "unit"
2026-06-21T23:42:57.7777171Z       ],
2026-06-21T23:42:57.7777424Z       "stages": {
2026-06-21T23:42:57.7777683Z         "doc": {
2026-06-21T23:42:57.7777940Z           "complete": true,
2026-06-21T23:42:57.7778231Z           "evidence": [
2026-06-21T23:42:57.7778498Z             {
2026-06-21T23:42:57.7778760Z               "path": "CONTEXT.md",
2026-06-21T23:42:57.7779159Z               "line": 149
2026-06-21T23:42:57.7779423Z             }
2026-06-21T23:42:57.7779661Z           ]
2026-06-21T23:42:57.7779896Z         },
2026-06-21T23:42:57.7780135Z         "impl": {
2026-06-21T23:42:57.7780397Z           "complete": true,
2026-06-21T23:42:57.7780682Z           "evidence": [
2026-06-21T23:42:57.7780959Z             {
2026-06-21T23:42:57.7781250Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T23:42:57.7781498Z               "line": 484
2026-06-21T23:42:57.7781685Z             }
2026-06-21T23:42:57.7781850Z           ]
2026-06-21T23:42:57.7782031Z         },
2026-06-21T23:42:57.7782266Z         "int": {
2026-06-21T23:42:57.7782538Z           "complete": false,
2026-06-21T23:42:57.7782862Z           "evidence": []
2026-06-21T23:42:57.7783140Z         },
2026-06-21T23:42:57.7783373Z         "unit": {
2026-06-21T23:42:57.7783641Z           "complete": true,
2026-06-21T23:42:57.7783932Z           "evidence": [
2026-06-21T23:42:57.7784198Z             {
2026-06-21T23:42:57.7784474Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T23:42:57.7784819Z               "line": 657
2026-06-21T23:42:57.7785082Z             },
2026-06-21T23:42:57.7785320Z             {
2026-06-21T23:42:57.7785587Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T23:42:57.7785945Z               "line": 681
2026-06-21T23:42:57.7786227Z             },
2026-06-21T23:42:57.7786460Z             {
2026-06-21T23:42:57.7786727Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T23:42:57.7787065Z               "line": 705
2026-06-21T23:42:57.7787327Z             }
2026-06-21T23:42:57.7787556Z           ]
2026-06-21T23:42:57.7787775Z         }
2026-06-21T23:42:57.7788008Z       }
2026-06-21T23:42:57.7788247Z     },
2026-06-21T23:42:57.7788481Z     {
2026-06-21T23:42:57.7788719Z       "id": "REQ-ARCH-1",
2026-06-21T23:42:57.7789024Z       "title": "Many small acyclically-layered crates",
2026-06-21T23:42:57.7789300Z       "requiredStages": [
2026-06-21T23:42:57.7789486Z         "impl"
2026-06-21T23:42:57.7789652Z       ],
2026-06-21T23:42:57.7789809Z       "stages": {
2026-06-21T23:42:57.7789983Z         "doc": {
2026-06-21T23:42:57.7790165Z           "complete": false,
2026-06-21T23:42:57.7790365Z           "evidence": []
2026-06-21T23:42:57.7790541Z         },
2026-06-21T23:42:57.7790705Z         "impl": {
2026-06-21T23:42:57.7790875Z           "complete": true,
2026-06-21T23:42:57.7791067Z           "evidence": [
2026-06-21T23:42:57.7791247Z             {
2026-06-21T23:42:57.7791428Z               "path": "crates/spt-msg/src/lib.rs",
2026-06-21T23:42:57.7791658Z               "line": 18
2026-06-21T23:42:57.7791833Z             },
2026-06-21T23:42:57.7792134Z             {
2026-06-21T23:42:57.7792331Z               "path": "crates/spt-proto/src/lib.rs",
2026-06-21T23:42:57.7792567Z               "line": 12
2026-06-21T23:42:57.7792760Z             },
2026-06-21T23:42:57.7792927Z             {
2026-06-21T23:42:57.7793117Z               "path": "crates/spt-store/src/lib.rs",
2026-06-21T23:42:57.7793357Z               "line": 12
2026-06-21T23:42:57.7793538Z             }
2026-06-21T23:42:57.7793695Z           ]
2026-06-21T23:42:57.7793858Z         },
2026-06-21T23:42:57.7794015Z         "int": {
2026-06-21T23:42:57.7794192Z           "complete": false,
2026-06-21T23:42:57.7794405Z           "evidence": []
2026-06-21T23:42:57.7794706Z         },
2026-06-21T23:42:57.7794869Z         "unit": {
2026-06-21T23:42:57.7795053Z           "complete": false,
2026-06-21T23:42:57.7795360Z           "evidence": []
2026-06-21T23:42:57.7795537Z         }
2026-06-21T23:42:57.7795703Z       }
2026-06-21T23:42:57.7795852Z     },
2026-06-21T23:42:57.7796004Z     {
2026-06-21T23:42:57.7796185Z       "id": "REQ-ARCH-2",
2026-06-21T23:42:57.7796453Z       "title": "Public SDK surface is spt-proto, spt-runtime, spt-msg",
2026-06-21T23:42:57.7796764Z       "requiredStages": [
2026-06-21T23:42:57.7796953Z         "impl"
2026-06-21T23:42:57.7797130Z       ],
2026-06-21T23:42:57.7797292Z       "stages": {
2026-06-21T23:42:57.7797459Z         "doc": {
2026-06-21T23:42:57.7797635Z           "complete": false,
2026-06-21T23:42:57.7797848Z           "evidence": []
2026-06-21T23:42:57.7798025Z         },
2026-06-21T23:42:57.7798187Z         "impl": {
2026-06-21T23:42:57.7798354Z           "complete": true,
2026-06-21T23:42:57.7798554Z           "evidence": [
2026-06-21T23:42:57.7798736Z             {
2026-06-21T23:42:57.7798941Z               "path": "crates/spt-runtime/src/lib.rs",
2026-06-21T23:42:57.7799265Z               "line": 18
2026-06-21T23:42:57.7799450Z             }
2026-06-21T23:42:57.7799614Z           ]
2026-06-21T23:42:57.7799765Z         },
2026-06-21T23:42:57.7799914Z         "int": {
2026-06-21T23:42:57.7800099Z           "complete": false,
2026-06-21T23:42:57.7800293Z           "evidence": []
2026-06-21T23:42:57.7800467Z         },
2026-06-21T23:42:57.7800630Z         "unit": {
2026-06-21T23:42:57.7800805Z           "complete": false,
2026-06-21T23:42:57.7800997Z           "evidence": []
2026-06-21T23:42:57.7801168Z         }
2026-06-21T23:42:57.7801326Z       }
2026-06-21T23:42:57.7801483Z     },
2026-06-21T23:42:57.7801636Z     {
2026-06-21T23:42:57.7801793Z       "id": "REQ-ARCH-3",
2026-06-21T23:42:57.7802098Z       "title": "Wire-protocol version independent of crate semver, N-1 compat window",
2026-06-21T23:42:57.7802437Z       "requiredStages": [
2026-06-21T23:42:57.7802642Z         "impl",
2026-06-21T23:42:57.7802820Z         "unit"
2026-06-21T23:42:57.7802975Z       ],
2026-06-21T23:42:57.7803142Z       "stages": {
2026-06-21T23:42:57.7803316Z         "doc": {
2026-06-21T23:42:57.7803497Z           "complete": false,
2026-06-21T23:42:57.7803697Z           "evidence": []
2026-06-21T23:42:57.7803883Z         },
2026-06-21T23:42:57.7804040Z         "impl": {
2026-06-21T23:42:57.7804217Z           "complete": true,
2026-06-21T23:42:57.7804408Z           "evidence": [
2026-06-21T23:42:57.7804589Z             {
2026-06-21T23:42:57.7804790Z               "path": "crates/spt-proto/src/version.rs",
2026-06-21T23:42:57.7805028Z               "line": 34
2026-06-21T23:42:57.7805208Z             },
2026-06-21T23:42:57.7805372Z             {
2026-06-21T23:42:57.7805560Z               "path": "crates/spt-proto/src/version.rs",
2026-06-21T23:42:57.7805812Z               "line": 41
2026-06-21T23:42:57.7806002Z             }
2026-06-21T23:42:57.7806164Z           ]
2026-06-21T23:42:57.7806331Z         },
2026-06-21T23:42:57.7806493Z         "int": {
2026-06-21T23:42:57.7806665Z           "complete": false,
2026-06-21T23:42:57.7806869Z           "evidence": []
2026-06-21T23:42:57.7807051Z         },
2026-06-21T23:42:57.7807208Z         "unit": {
2026-06-21T23:42:57.7807385Z           "complete": true,
2026-06-21T23:42:57.7807813Z           "evidence": [
2026-06-21T23:42:57.7807987Z             {
2026-06-21T23:42:57.7808171Z               "path": "crates/spt-proto/src/version.rs",
2026-06-21T23:42:57.7808418Z               "line": 51
2026-06-21T23:42:57.7808595Z             },
2026-06-21T23:42:57.7808752Z             {
2026-06-21T23:42:57.7809024Z               "path": "crates/spt-proto/src/version.rs",
2026-06-21T23:42:57.7809267Z               "line": 71
2026-06-21T23:42:57.7809443Z             },
2026-06-21T23:42:57.7809615Z             {
2026-06-21T23:42:57.7809805Z               "path": "crates/spt-proto/src/version.rs",
2026-06-21T23:42:57.7810053Z               "line": 83
2026-06-21T23:42:57.7810335Z             }
2026-06-21T23:42:57.7810503Z           ]
2026-06-21T23:42:57.7810664Z         }
2026-06-21T23:42:57.7810815Z       }
2026-06-21T23:42:57.7810975Z     },
2026-06-21T23:42:57.7811137Z     {
2026-06-21T23:42:57.7811309Z       "id": "REQ-ARCH-4",
2026-06-21T23:42:57.7811586Z       "title": "Copy-verbatim the commodity layer from the sister project",
2026-06-21T23:42:57.7811896Z       "requiredStages": [
2026-06-21T23:42:57.7812092Z         "impl",
2026-06-21T23:42:57.7812258Z         "unit"
2026-06-21T23:42:57.7812426Z       ],
2026-06-21T23:42:57.7812578Z       "stages": {
2026-06-21T23:42:57.7812755Z         "doc": {
2026-06-21T23:42:57.7812945Z           "complete": false,
2026-06-21T23:42:57.7813145Z           "evidence": []
2026-06-21T23:42:57.7813332Z         },
2026-06-21T23:42:57.7813498Z         "impl": {
2026-06-21T23:42:57.7813673Z           "complete": true,
2026-06-21T23:42:57.7813871Z           "evidence": [
2026-06-21T23:42:57.7814057Z             {
2026-06-21T23:42:57.7814257Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T23:42:57.7814505Z               "line": 165
2026-06-21T23:42:57.7814697Z             },
2026-06-21T23:42:57.7814858Z             {
2026-06-21T23:42:57.7815045Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T23:42:57.7815288Z               "line": 188
2026-06-21T23:42:57.7815473Z             },
2026-06-21T23:42:57.7815636Z             {
2026-06-21T23:42:57.7815826Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T23:42:57.7816069Z               "line": 208
2026-06-21T23:42:57.7816264Z             },
2026-06-21T23:42:57.7816433Z             {
2026-06-21T23:42:57.7816629Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T23:42:57.7816871Z               "line": 223
2026-06-21T23:42:57.7817058Z             },
2026-06-21T23:42:57.7817225Z             {
2026-06-21T23:42:57.7817410Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T23:42:57.7817653Z               "line": 273
2026-06-21T23:42:57.7817840Z             }
2026-06-21T23:42:57.7818007Z           ]
2026-06-21T23:42:57.7818179Z         },
2026-06-21T23:42:57.7818330Z         "int": {
2026-06-21T23:42:57.7818508Z           "complete": false,
2026-06-21T23:42:57.7818712Z           "evidence": []
2026-06-21T23:42:57.7818895Z         },
2026-06-21T23:42:57.7819155Z         "unit": {
2026-06-21T23:42:57.7819345Z           "complete": true,
2026-06-21T23:42:57.7819546Z           "evidence": [
2026-06-21T23:42:57.7819731Z             {
2026-06-21T23:42:57.7819932Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T23:42:57.7820171Z               "line": 334
2026-06-21T23:42:57.7820361Z             },
2026-06-21T23:42:57.7820547Z             {
2026-06-21T23:42:57.7820744Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T23:42:57.7820981Z               "line": 344
2026-06-21T23:42:57.7821171Z             },
2026-06-21T23:42:57.7821337Z             {
2026-06-21T23:42:57.7821531Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T23:42:57.7821779Z               "line": 355
2026-06-21T23:42:57.7821959Z             },
2026-06-21T23:42:57.7822122Z             {
2026-06-21T23:42:57.7822308Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T23:42:57.7822541Z               "line": 366
2026-06-21T23:42:57.7822847Z             },
2026-06-21T23:42:57.7823010Z             {
2026-06-21T23:42:57.7823200Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T23:42:57.7823438Z               "line": 378
2026-06-21T23:42:57.7823625Z             },
2026-06-21T23:42:57.7823790Z             {
2026-06-21T23:42:57.7823969Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T23:42:57.7824204Z               "line": 391
2026-06-21T23:42:57.7824384Z             },
2026-06-21T23:42:57.7824550Z             {
2026-06-21T23:42:57.7824741Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T23:42:57.7824976Z               "line": 402
2026-06-21T23:42:57.7825290Z             },
2026-06-21T23:42:57.7825456Z             {
2026-06-21T23:42:57.7825647Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T23:42:57.7825882Z               "line": 419
2026-06-21T23:42:57.7826067Z             },
2026-06-21T23:42:57.7886737Z             {
2026-06-21T23:42:57.7887195Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T23:42:57.7887551Z               "line": 547
2026-06-21T23:42:57.7887773Z             }
2026-06-21T23:42:57.7887969Z           ]
2026-06-21T23:42:57.7888140Z         }
2026-06-21T23:42:57.7888298Z       }
2026-06-21T23:42:57.7888450Z     },
2026-06-21T23:42:57.7888821Z     {
2026-06-21T23:42:57.7889141Z       "id": "REQ-CLI-1",
2026-06-21T23:42:57.7890627Z       "title": "spt endpoint noun namespace: absorbs fork/suspend/wake/shutdown/rename/stop/digest + access (ported 1:1: allow|revoke|open|list, decision 21) + description (ex-resources blurb; bare=show, set=author); merged endpoint list [--local|--subnet <name>] grouped by subnet with SELF pinned, --detail adding the ex-resources yellow-pages blurb projection; bare spt endpoint = the list (M8 decisions 1-2, 25)",
2026-06-21T23:42:57.7892129Z       "requiredStages": [
2026-06-21T23:42:57.7892376Z         "impl",
2026-06-21T23:42:57.7892590Z         "unit"
2026-06-21T23:42:57.7892792Z       ],
2026-06-21T23:42:57.7892985Z       "stages": {
2026-06-21T23:42:57.7893195Z         "doc": {
2026-06-21T23:42:57.7893415Z           "complete": false,
2026-06-21T23:42:57.7893662Z           "evidence": []
2026-06-21T23:42:57.7893895Z         },
2026-06-21T23:42:57.7894101Z         "impl": {
2026-06-21T23:42:57.7894277Z           "complete": true,
2026-06-21T23:42:57.7894477Z           "evidence": [
2026-06-21T23:42:57.7894660Z             {
2026-06-21T23:42:57.7907981Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.7908262Z               "line": 225
2026-06-21T23:42:57.7908455Z             },
2026-06-21T23:42:57.7908638Z             {
2026-06-21T23:42:57.7908851Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.7909156Z               "line": 1093
2026-06-21T23:42:57.7909351Z             },
2026-06-21T23:42:57.7909518Z             {
2026-06-21T23:42:57.7909695Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.7909928Z               "line": 1720
2026-06-21T23:42:57.7910119Z             },
2026-06-21T23:42:57.7910285Z             {
2026-06-21T23:42:57.7910462Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.7910692Z               "line": 3124
2026-06-21T23:42:57.7910877Z             }
2026-06-21T23:42:57.7911040Z           ]
2026-06-21T23:42:57.7911200Z         },
2026-06-21T23:42:57.7911357Z         "int": {
2026-06-21T23:42:57.7911536Z           "complete": false,
2026-06-21T23:42:57.7911742Z           "evidence": []
2026-06-21T23:42:57.7911927Z         },
2026-06-21T23:42:57.7912085Z         "unit": {
2026-06-21T23:42:57.7912271Z           "complete": true,
2026-06-21T23:42:57.7912471Z           "evidence": [
2026-06-21T23:42:57.7912657Z             {
2026-06-21T23:42:57.7912843Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.7913072Z               "line": 7947
2026-06-21T23:42:57.7913254Z             }
2026-06-21T23:42:57.7913411Z           ]
2026-06-21T23:42:57.7913569Z         }
2026-06-21T23:42:57.7913730Z       }
2026-06-21T23:42:57.7914191Z     },
2026-06-21T23:42:57.7914349Z     {
2026-06-21T23:42:57.7914516Z       "id": "REQ-CLI-2",
2026-06-21T23:42:57.7915317Z       "title": "spt daemon noun: run|stop|status (hidden daemon verb becomes daemon run; agent-endpoint shutdown keeps its name under endpoint); daemon status renders the pump heartbeat (last-tick recency) so a half-dead daemon is never rendered implied-healthy (M8 decisions 5, 23)",
2026-06-21T23:42:57.7916138Z       "requiredStages": [
2026-06-21T23:42:57.7916341Z         "impl",
2026-06-21T23:42:57.7916512Z         "unit"
2026-06-21T23:42:57.7916681Z       ],
2026-06-21T23:42:57.7916850Z       "stages": {
2026-06-21T23:42:57.7917163Z         "doc": {
2026-06-21T23:42:57.7917349Z           "complete": false,
2026-06-21T23:42:57.7917549Z           "evidence": []
2026-06-21T23:42:57.7917736Z         },
2026-06-21T23:42:57.7917906Z         "impl": {
2026-06-21T23:42:57.7918098Z           "complete": true,
2026-06-21T23:42:57.7918298Z           "evidence": [
2026-06-21T23:42:57.7918488Z             {
2026-06-21T23:42:57.7918695Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:42:57.7919039Z               "line": 414
2026-06-21T23:42:57.7919217Z             },
2026-06-21T23:42:57.7919379Z             {
2026-06-21T23:42:57.7919572Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-21T23:42:57.7919839Z               "line": 97
2026-06-21T23:42:57.7920026Z             },
2026-06-21T23:42:57.7920192Z             {
2026-06-21T23:42:57.7920379Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T23:42:57.7920618Z               "line": 256
2026-06-21T23:42:57.7920812Z             },
2026-06-21T23:42:57.7920984Z             {
2026-06-21T23:42:57.7921170Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.7921418Z               "line": 434
2026-06-21T23:42:57.7921595Z             },
2026-06-21T23:42:57.7921760Z             {
2026-06-21T23:42:57.7921931Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.7922168Z               "line": 1174
2026-06-21T23:42:57.7922354Z             },
2026-06-21T23:42:57.7922512Z             {
2026-06-21T23:42:57.7922697Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.7922927Z               "line": 1958
2026-06-21T23:42:57.7923117Z             },
2026-06-21T23:42:57.7923284Z             {
2026-06-21T23:42:57.7923461Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.7923689Z               "line": 2047
2026-06-21T23:42:57.7923866Z             },
2026-06-21T23:42:57.7924032Z             {
2026-06-21T23:42:57.7924199Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.7924425Z               "line": 2108
2026-06-21T23:42:57.7924632Z             }
2026-06-21T23:42:57.7924795Z           ]
2026-06-21T23:42:57.7924946Z         },
2026-06-21T23:42:57.7925105Z         "int": {
2026-06-21T23:42:57.7925285Z           "complete": false,
2026-06-21T23:42:57.7925481Z           "evidence": []
2026-06-21T23:42:57.7925667Z         },
2026-06-21T23:42:57.7925843Z         "unit": {
2026-06-21T23:42:57.7926021Z           "complete": true,
2026-06-21T23:42:57.7926229Z           "evidence": [
2026-06-21T23:42:57.7926416Z             {
2026-06-21T23:42:57.7926616Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T23:42:57.7926867Z               "line": 338
2026-06-21T23:42:57.7927044Z             },
2026-06-21T23:42:57.7927213Z             {
2026-06-21T23:42:57.7927390Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.7927619Z               "line": 8102
2026-06-21T23:42:57.7927823Z             }
2026-06-21T23:42:57.7927991Z           ]
2026-06-21T23:42:57.7928152Z         }
2026-06-21T23:42:57.7928325Z       }
2026-06-21T23:42:57.7928481Z     },
2026-06-21T23:42:57.7928640Z     {
2026-06-21T23:42:57.7928805Z       "id": "REQ-CLI-3",
2026-06-21T23:42:57.7929678Z       "title": "Agent hot path stays flat across the M8 reorg: send/ring/ready/whoami/how-to unchanged; notify moves to subnet notify while notif stays top-level; breaking renames land clean with no deprecation shims (zero external CLI consumers pre-spt-claude-code) (M8 decisions 3-4, 9)",
2026-06-21T23:42:57.7930620Z       "requiredStages": [
2026-06-21T23:42:57.7930810Z         "impl",
2026-06-21T23:42:57.7930982Z         "unit"
2026-06-21T23:42:57.7931139Z       ],
2026-06-21T23:42:57.7931292Z       "stages": {
2026-06-21T23:42:57.7931474Z         "doc": {
2026-06-21T23:42:57.7931644Z           "complete": false,
2026-06-21T23:42:57.7931845Z           "evidence": []
2026-06-21T23:42:57.7932031Z         },
2026-06-21T23:42:57.7932198Z         "impl": {
2026-06-21T23:42:57.7932372Z           "complete": true,
2026-06-21T23:42:57.7932670Z           "evidence": [
2026-06-21T23:42:57.7932853Z             {
2026-06-21T23:42:57.7933033Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.7933257Z               "line": 1087
2026-06-21T23:42:57.7933443Z             }
2026-06-21T23:42:57.7933605Z           ]
2026-06-21T23:42:57.7933772Z         },
2026-06-21T23:42:57.7933934Z         "int": {
2026-06-21T23:42:57.7934106Z           "complete": false,
2026-06-21T23:42:57.7934302Z           "evidence": []
2026-06-21T23:42:57.7934482Z         },
2026-06-21T23:42:57.7934641Z         "unit": {
2026-06-21T23:42:57.7934816Z           "complete": true,
2026-06-21T23:42:57.7935009Z           "evidence": [
2026-06-21T23:42:57.7935183Z             {
2026-06-21T23:42:57.7935379Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.7935612Z               "line": 7912
2026-06-21T23:42:57.7935807Z             }
2026-06-21T23:42:57.7935975Z           ]
2026-06-21T23:42:57.7936136Z         }
2026-06-21T23:42:57.7936375Z       }
2026-06-21T23:42:57.7936633Z     },
2026-06-21T23:42:57.7936886Z     {
2026-06-21T23:42:57.7937263Z       "id": "REQ-CLI-4",
2026-06-21T23:42:57.7939981Z       "title": "User-facing CLI output is human-readable: DIRECT-USER commands (e.g. adapter update/list/use) render friendly prose instead of raw CODE:RESULT markers — \"claude-spt is up to date (0.2.0).\" not \"ADAPTER_UPDATE_UPTODATE:claude-spt: installed 0.2.0, latest 0.2.0\". Strictly bounded to the direct-user surface: the adapter-PARSED bringup tokens (SEEDED/BOUND/READY/NO_SEED on seed/listen, which adapters grep) stay machine-parseable — humanization is additive (a human line beside the marker, or a --porcelain/--quiet split), never a silent rename of a dual-contract marker. The user-facing bringup composition belongs to the adapter (perri); this REQ owns only the direct-user CLI surface. (v0.9.0)",
2026-06-21T23:42:57.7942067Z       "requiredStages": [],
2026-06-21T23:42:57.7942382Z       "stages": {
2026-06-21T23:42:57.7942644Z         "doc": {
2026-06-21T23:42:57.7942985Z           "complete": false,
2026-06-21T23:42:57.7943269Z           "evidence": []
2026-06-21T23:42:57.7943517Z         },
2026-06-21T23:42:57.7943874Z         "impl": {
2026-06-21T23:42:57.7944141Z           "complete": true,
2026-06-21T23:42:57.7944480Z           "evidence": [
2026-06-21T23:42:57.7944762Z             {
2026-06-21T23:42:57.7945024Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.7945429Z               "line": 5678
2026-06-21T23:42:57.7945695Z             }
2026-06-21T23:42:57.7945991Z           ]
2026-06-21T23:42:57.7946287Z         },
2026-06-21T23:42:57.7946535Z         "int": {
2026-06-21T23:42:57.7946855Z           "complete": false,
2026-06-21T23:42:57.7947146Z           "evidence": []
2026-06-21T23:42:57.7947456Z         },
2026-06-21T23:42:57.7947717Z         "unit": {
2026-06-21T23:42:57.7947987Z           "complete": false,
2026-06-21T23:42:57.7948314Z           "evidence": []
2026-06-21T23:42:57.7948629Z         }
2026-06-21T23:42:57.7948906Z       }
2026-06-21T23:42:57.7949239Z     },
2026-06-21T23:42:57.7949516Z     {
2026-06-21T23:42:57.7949821Z       "id": "REQ-CLI-HELP-MARKDOWN",
2026-06-21T23:42:57.7953040Z       "title": "`spt --help` (and every subcommand --help) renders the inline Markdown authored in the clap doc-comments as terminal styling, never as literal markers: `**bold**` → ANSI bold, `` `code` `` → ANSI cyan, `[text](url)` → `text`. The markers are STRIPPED either way — a raw `**` or backtick must NEVER reach the user (the operator-reported v0.12.0 defect: help text reads `**ctrl-b**` and stray backticks verbatim). Color/bold escapes are emitted ONLY when the help is going to a real terminal AND color is not suppressed (NO_COLOR unset · CLICOLOR != 0 · CLICOLOR_FORCE forces on); a pipe / redirect / CI / NO_COLOR falls back to strip-only (clean plaintext, zero escapes) so machine-readable help is byte-identical regardless of marker syntax. Pure transform over the clap-rendered help string at the single run()/bare_invocation chokepoint; preserves pre-existing ANSI (CSI sequences passed through untouched), never spans markers across a newline, leaves unmatched/empty markers literal, and does not alter the help layout. (v0.12.1)",
2026-06-21T23:42:57.7956369Z       "requiredStages": [
2026-06-21T23:42:57.7956665Z         "impl",
2026-06-21T23:42:57.7956994Z         "unit"
2026-06-21T23:42:57.7957251Z       ],
2026-06-21T23:42:57.7957481Z       "stages": {
2026-06-21T23:42:57.7957814Z         "doc": {
2026-06-21T23:42:57.7958082Z           "complete": false,
2026-06-21T23:42:57.7958411Z           "evidence": []
2026-06-21T23:42:57.7958729Z         },
2026-06-21T23:42:57.7959018Z         "impl": {
2026-06-21T23:42:57.7959381Z           "complete": true,
2026-06-21T23:42:57.7959671Z           "evidence": [
2026-06-21T23:42:57.7959977Z             {
2026-06-21T23:42:57.7960273Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T23:42:57.7960616Z               "line": 8
2026-06-21T23:42:57.7960949Z             },
2026-06-21T23:42:57.7961217Z             {
2026-06-21T23:42:57.7961534Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T23:42:57.7961861Z               "line": 51
2026-06-21T23:42:57.7962147Z             },
2026-06-21T23:42:57.7962437Z             {
2026-06-21T23:42:57.7962705Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T23:42:57.7963029Z               "line": 82
2026-06-21T23:42:57.7963387Z             },
2026-06-21T23:42:57.7963654Z             {
2026-06-21T23:42:57.7963962Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T23:42:57.7964303Z               "line": 229
2026-06-21T23:42:57.7964557Z             }
2026-06-21T23:42:57.7964852Z           ]
2026-06-21T23:42:57.7965120Z         },
2026-06-21T23:42:57.7965391Z         "int": {
2026-06-21T23:42:57.7965716Z           "complete": false,
2026-06-21T23:42:57.7965987Z           "evidence": []
2026-06-21T23:42:57.7966331Z         },
2026-06-21T23:42:57.7966583Z         "unit": {
2026-06-21T23:42:57.7966878Z           "complete": true,
2026-06-21T23:42:57.7967192Z           "evidence": [
2026-06-21T23:42:57.7967459Z             {
2026-06-21T23:42:57.7967779Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T23:42:57.7968140Z               "line": 249
2026-06-21T23:42:57.7968432Z             },
2026-06-21T23:42:57.7968708Z             {
2026-06-21T23:42:57.7969070Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T23:42:57.7969435Z               "line": 256
2026-06-21T23:42:57.7969702Z             },
2026-06-21T23:42:57.7969931Z             {
2026-06-21T23:42:57.7970303Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T23:42:57.7970618Z               "line": 263
2026-06-21T23:42:57.7970946Z             },
2026-06-21T23:42:57.7971200Z             {
2026-06-21T23:42:57.7971487Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T23:42:57.7971867Z               "line": 270
2026-06-21T23:42:57.7972137Z             },
2026-06-21T23:42:57.7972421Z             {
2026-06-21T23:42:57.7972741Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T23:42:57.7973061Z               "line": 297
2026-06-21T23:42:57.7973370Z             },
2026-06-21T23:42:57.7973632Z             {
2026-06-21T23:42:57.7973918Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T23:42:57.7974252Z               "line": 307
2026-06-21T23:42:57.7974642Z             },
2026-06-21T23:42:57.7974974Z             {
2026-06-21T23:42:57.7975255Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T23:42:57.7975603Z               "line": 317
2026-06-21T23:42:57.7975903Z             },
2026-06-21T23:42:57.7976151Z             {
2026-06-21T23:42:57.7976461Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T23:42:57.7976790Z               "line": 331
2026-06-21T23:42:57.7977042Z             },
2026-06-21T23:42:57.7977385Z             {
2026-06-21T23:42:57.7977658Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T23:42:57.7978034Z               "line": 340
2026-06-21T23:42:57.7978415Z             },
2026-06-21T23:42:57.7978644Z             {
2026-06-21T23:42:57.7979054Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T23:42:57.7979378Z               "line": 348
2026-06-21T23:42:57.7979706Z             }
2026-06-21T23:42:57.7980000Z           ]
2026-06-21T23:42:57.7980252Z         }
2026-06-21T23:42:57.7980563Z       }
2026-06-21T23:42:57.7980806Z     },
2026-06-21T23:42:57.7981093Z     {
2026-06-21T23:42:57.7981364Z       "id": "REQ-CLI-OUTPUT-MARKDOWN",
2026-06-21T23:42:57.7989299Z       "title": "Human-prose COMMAND OUTPUT (not just `--help`) renders the inline Markdown authored in its source strings as terminal styling, never literal markers: `` `code` `` → ANSI cyan, `**bold**` → ANSI bold, `[text](url)` → `text`, markers STRIPPED either way. REQ-CLI-HELP-MARKDOWN only hooked the clap `--help` chokepoint, so command output still printed raw Markdown (audit: `spt how-to` topic text showed `# headers`/backticks, `spt subnet`/`subnet status` hint footers showed stray backticks, the daemon-status `not running` line, the `ENDPOINT_RUN_STARTED` attach hint, and the daemon's `SUBNET_DETACHED` startup line — 13 prose surfaces). The same line-bounded pure `helpfmt::render` is applied at each emit site, color-gated by the OUTPUT STREAM's own tty (`stdout_color` for print/println, the new `stderr_color` for eprintln). HARNESS-SAFETY (binding): color is tty-gated, so an adapter (piped / non-tty / NO_COLOR) gets STRIP mode = zero ANSI + markers removed; every dual-contract MACHINE token on a rendered line (`ENDPOINT_RUN_STARTED:`, `NO_SUCH_TOPIC:`, `SUBNET_DETACHED:`) carries NO Markdown markers, so it survives strip byte-intact — the adapter parse is never perturbed. Pure-machine output (the `<EVENT …>` envelope, bringup parse-tokens SEEDED/BOUND/READY/NO_SEED, `--json`, QR) is NEVER routed through the renderer. The one spt-daemon source string (`SUBNET_DETACHED`, the bin-local renderer is unreachable from the daemon crate) is authored marker-free instead. (v0.12.2)",
2026-06-21T23:42:57.7993594Z       "requiredStages": [
2026-06-21T23:42:57.7993914Z         "impl",
2026-06-21T23:42:57.7994186Z         "unit"
2026-06-21T23:42:57.7994452Z       ],
2026-06-21T23:42:57.7994743Z       "stages": {
2026-06-21T23:42:57.7995058Z         "doc": {
2026-06-21T23:42:57.7995344Z           "complete": false,
2026-06-21T23:42:57.7995671Z           "evidence": []
2026-06-21T23:42:57.7995941Z         },
2026-06-21T23:42:57.7996228Z         "impl": {
2026-06-21T23:42:57.7996514Z           "complete": true,
2026-06-21T23:42:57.7996781Z           "evidence": [
2026-06-21T23:42:57.7997115Z             {
2026-06-21T23:42:57.7997434Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:42:57.7997825Z               "line": 141
2026-06-21T23:42:57.7998111Z             },
2026-06-21T23:42:57.7998356Z             {
2026-06-21T23:42:57.7998696Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.7999102Z               "line": 1376
2026-06-21T23:42:57.7999446Z             },
2026-06-21T23:42:57.7999769Z             {
2026-06-21T23:42:57.8000018Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.8000398Z               "line": 2145
2026-06-21T23:42:57.8000676Z             },
2026-06-21T23:42:57.8000960Z             {
2026-06-21T23:42:57.8001239Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.8001716Z               "line": 4368
2026-06-21T23:42:57.8002026Z             },
2026-06-21T23:42:57.8002322Z             {
2026-06-21T23:42:57.8002612Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.8002946Z               "line": 4466
2026-06-21T23:42:57.8003238Z             },
2026-06-21T23:42:57.8003534Z             {
2026-06-21T23:42:57.8003803Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.8004087Z               "line": 5257
2026-06-21T23:42:57.8004441Z             },
2026-06-21T23:42:57.8004687Z             {
2026-06-21T23:42:57.8005007Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T23:42:57.8005461Z               "line": 39
2026-06-21T23:42:57.8005714Z             }
2026-06-21T23:42:57.8006034Z           ]
2026-06-21T23:42:57.8006284Z         },
2026-06-21T23:42:57.8006568Z         "int": {
2026-06-21T23:42:57.8006897Z           "complete": false,
2026-06-21T23:42:57.8007154Z           "evidence": []
2026-06-21T23:42:57.8016178Z         },
2026-06-21T23:42:57.8016396Z         "unit": {
2026-06-21T23:42:57.8016594Z           "complete": true,
2026-06-21T23:42:57.8016806Z           "evidence": [
2026-06-21T23:42:57.8017001Z             {
2026-06-21T23:42:57.8017190Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.8017438Z               "line": 10272
2026-06-21T23:42:57.8017625Z             },
2026-06-21T23:42:57.8017795Z             {
2026-06-21T23:42:57.8017992Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T23:42:57.8018226Z               "line": 281
2026-06-21T23:42:57.8018420Z             },
2026-06-21T23:42:57.8018592Z             {
2026-06-21T23:42:57.8018778Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T23:42:57.8019122Z               "line": 358
2026-06-21T23:42:57.8019317Z             },
2026-06-21T23:42:57.8019495Z             {
2026-06-21T23:42:57.8019678Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T23:42:57.8019903Z               "line": 381
2026-06-21T23:42:57.8020103Z             },
2026-06-21T23:42:57.8020265Z             {
2026-06-21T23:42:57.8020452Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-21T23:42:57.8020684Z               "line": 395
2026-06-21T23:42:57.8020870Z             }
2026-06-21T23:42:57.8021028Z           ]
2026-06-21T23:42:57.8021180Z         }
2026-06-21T23:42:57.8021343Z       }
2026-06-21T23:42:57.8021500Z     },
2026-06-21T23:42:57.8021662Z     {
2026-06-21T23:42:57.8021823Z       "id": "REQ-CONSENT-1",
2026-06-21T23:42:57.8022822Z       "title": "Consent grant store: capability x subject-agent x target-node rows, enforced at the target node, subnet-settable (replicates as security material near the trust store), revocable; gated-capability ids (remote-exec, instantiate-anywhere) reserved-but-refusing; v1 consumers are the shell spawn gates (CONTEXT Consent & security gates)",
2026-06-21T23:42:57.8023837Z       "requiredStages": [
2026-06-21T23:42:57.8024038Z         "impl",
2026-06-21T23:42:57.8024210Z         "unit"
2026-06-21T23:42:57.8024372Z       ],
2026-06-21T23:42:57.8024539Z       "stages": {
2026-06-21T23:42:57.8024719Z         "doc": {
2026-06-21T23:42:57.8024900Z           "complete": false,
2026-06-21T23:42:57.8025093Z           "evidence": []
2026-06-21T23:42:57.8025265Z         },
2026-06-21T23:42:57.8025421Z         "impl": {
2026-06-21T23:42:57.8025590Z           "complete": true,
2026-06-21T23:42:57.8025784Z           "evidence": [
2026-06-21T23:42:57.8025970Z             {
2026-06-21T23:42:57.8026171Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T23:42:57.8026428Z               "line": 27
2026-06-21T23:42:57.8026614Z             },
2026-06-21T23:42:57.8026776Z             {
2026-06-21T23:42:57.8026971Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T23:42:57.8027211Z               "line": 75
2026-06-21T23:42:57.8027390Z             },
2026-06-21T23:42:57.8027547Z             {
2026-06-21T23:42:57.8027730Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T23:42:57.8028128Z               "line": 98
2026-06-21T23:42:57.8028298Z             },
2026-06-21T23:42:57.8028467Z             {
2026-06-21T23:42:57.8028651Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T23:42:57.8028890Z               "line": 82
2026-06-21T23:42:57.8029148Z             },
2026-06-21T23:42:57.8029300Z             {
2026-06-21T23:42:57.8029500Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T23:42:57.8029740Z               "line": 109
2026-06-21T23:42:57.8029925Z             },
2026-06-21T23:42:57.8030074Z             {
2026-06-21T23:42:57.8030262Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T23:42:57.8030629Z               "line": 127
2026-06-21T23:42:57.8030806Z             },
2026-06-21T23:42:57.8030968Z             {
2026-06-21T23:42:57.8031163Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T23:42:57.8031412Z               "line": 142
2026-06-21T23:42:57.8031593Z             },
2026-06-21T23:42:57.8031759Z             {
2026-06-21T23:42:57.8031951Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.8032179Z               "line": 7048
2026-06-21T23:42:57.8032365Z             }
2026-06-21T23:42:57.8032535Z           ]
2026-06-21T23:42:57.8032692Z         },
2026-06-21T23:42:57.8032857Z         "int": {
2026-06-21T23:42:57.8033025Z           "complete": false,
2026-06-21T23:42:57.8033225Z           "evidence": []
2026-06-21T23:42:57.8033420Z         },
2026-06-21T23:42:57.8033583Z         "unit": {
2026-06-21T23:42:57.8033754Z           "complete": true,
2026-06-21T23:42:57.8033950Z           "evidence": [
2026-06-21T23:42:57.8034131Z             {
2026-06-21T23:42:57.8034331Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T23:42:57.8034593Z               "line": 334
2026-06-21T23:42:57.8034775Z             },
2026-06-21T23:42:57.8034941Z             {
2026-06-21T23:42:57.8035133Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T23:42:57.8035383Z               "line": 380
2026-06-21T23:42:57.8035573Z             },
2026-06-21T23:42:57.8035739Z             {
2026-06-21T23:42:57.8035930Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T23:42:57.8036174Z               "line": 391
2026-06-21T23:42:57.8036358Z             },
2026-06-21T23:42:57.8036517Z             {
2026-06-21T23:42:57.8036707Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T23:42:57.8036945Z               "line": 165
2026-06-21T23:42:57.8037113Z             },
2026-06-21T23:42:57.8037279Z             {
2026-06-21T23:42:57.8037471Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T23:42:57.8037714Z               "line": 184
2026-06-21T23:42:57.8037898Z             },
2026-06-21T23:42:57.8038065Z             {
2026-06-21T23:42:57.8038267Z               "path": "crates/spt-store/src/grants.rs",
2026-06-21T23:42:57.8038511Z               "line": 204
2026-06-21T23:42:57.8038688Z             },
2026-06-21T23:42:57.8038854Z             {
2026-06-21T23:42:57.8039112Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.8039332Z               "line": 8334
2026-06-21T23:42:57.8039536Z             }
2026-06-21T23:42:57.8039699Z           ]
2026-06-21T23:42:57.8039850Z         }
2026-06-21T23:42:57.8040004Z       }
2026-06-21T23:42:57.8040151Z     },
2026-06-21T23:42:57.8040305Z     {
2026-06-21T23:42:57.8040480Z       "id": "REQ-CONSENT-2",
2026-06-21T23:42:57.8041408Z       "title": "Interactive consent escalation: an ungated high-risk action routes a consent prompt to the user's most-recently-active session; allow-once / allow-always (writes a grant) / deny; pre-consent flags (can_shutdown, shell_wake_spawn_anywhere) author grants via manifest/settings (CONTEXT Consent & security gates)",
2026-06-21T23:42:57.8042348Z       "requiredStages": [
2026-06-21T23:42:57.8042540Z         "impl",
2026-06-21T23:42:57.8042720Z         "unit"
2026-06-21T23:42:57.8042888Z       ],
2026-06-21T23:42:57.8043038Z       "stages": {
2026-06-21T23:42:57.8043322Z         "doc": {
2026-06-21T23:42:57.8043504Z           "complete": false,
2026-06-21T23:42:57.8043694Z           "evidence": []
2026-06-21T23:42:57.8043885Z         },
2026-06-21T23:42:57.8044046Z         "impl": {
2026-06-21T23:42:57.8044219Z           "complete": true,
2026-06-21T23:42:57.8044420Z           "evidence": [
2026-06-21T23:42:57.8044600Z             {
2026-06-21T23:42:57.8044796Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T23:42:57.8045044Z               "line": 140
2026-06-21T23:42:57.8045229Z             },
2026-06-21T23:42:57.8045403Z             {
2026-06-21T23:42:57.8045602Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T23:42:57.8045948Z               "line": 165
2026-06-21T23:42:57.8046128Z             },
2026-06-21T23:42:57.8046289Z             {
2026-06-21T23:42:57.8046476Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T23:42:57.8046719Z               "line": 199
2026-06-21T23:42:57.8046899Z             },
2026-06-21T23:42:57.8047082Z             {
2026-06-21T23:42:57.8047267Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T23:42:57.8047496Z               "line": 241
2026-06-21T23:42:57.8047673Z             },
2026-06-21T23:42:57.8047835Z             {
2026-06-21T23:42:57.8048026Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T23:42:57.8048265Z               "line": 269
2026-06-21T23:42:57.8048439Z             },
2026-06-21T23:42:57.8048597Z             {
2026-06-21T23:42:57.8048784Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T23:42:57.8049095Z               "line": 300
2026-06-21T23:42:57.8049277Z             },
2026-06-21T23:42:57.8049456Z             {
2026-06-21T23:42:57.8049634Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.8049863Z               "line": 6839
2026-06-21T23:42:57.8050053Z             },
2026-06-21T23:42:57.8050207Z             {
2026-06-21T23:42:57.8050396Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.8050625Z               "line": 6897
2026-06-21T23:42:57.8050822Z             }
2026-06-21T23:42:57.8050982Z           ]
2026-06-21T23:42:57.8051180Z         },
2026-06-21T23:42:57.8051349Z         "int": {
2026-06-21T23:42:57.8051531Z           "complete": false,
2026-06-21T23:42:57.8051725Z           "evidence": []
2026-06-21T23:42:57.8051913Z         },
2026-06-21T23:42:57.8052074Z         "unit": {
2026-06-21T23:42:57.8052251Z           "complete": true,
2026-06-21T23:42:57.8052442Z           "evidence": [
2026-06-21T23:42:57.8052626Z             {
2026-06-21T23:42:57.8052823Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T23:42:57.8053067Z               "line": 419
2026-06-21T23:42:57.8053261Z             },
2026-06-21T23:42:57.8053415Z             {
2026-06-21T23:42:57.8053613Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T23:42:57.8053854Z               "line": 436
2026-06-21T23:42:57.8054040Z             },
2026-06-21T23:42:57.8054202Z             {
2026-06-21T23:42:57.8054403Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T23:42:57.8054650Z               "line": 472
2026-06-21T23:42:57.8054826Z             },
2026-06-21T23:42:57.8054985Z             {
2026-06-21T23:42:57.8055184Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T23:42:57.8055427Z               "line": 516
2026-06-21T23:42:57.8055614Z             },
2026-06-21T23:42:57.8055785Z             {
2026-06-21T23:42:57.8055963Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.8056200Z               "line": 9614
2026-06-21T23:42:57.8056390Z             },
2026-06-21T23:42:57.8056552Z             {
2026-06-21T23:42:57.8056745Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.8056970Z               "line": 9696
2026-06-21T23:42:57.8057149Z             }
2026-06-21T23:42:57.8057317Z           ]
2026-06-21T23:42:57.8057469Z         }
2026-06-21T23:42:57.8057632Z       }
2026-06-21T23:42:57.8057803Z     },
2026-06-21T23:42:57.8058080Z     {
2026-06-21T23:42:57.8058247Z       "id": "REQ-CONSENT-3",
2026-06-21T23:42:57.8060345Z       "title": "Per-capability approval gates (class-keyed): the require_approval enum may ride INDIVIDUAL [shell.capabilities] entries — gating the dangerous ACT, not just the spawn — with an optional class_key scoping the grant qualifier finer than the capability id ((owner endpoint x device class x node); a remembered HID-class attach grant never authorizes a storage-class attach). Reuses the grant store + interactive escalation + tighten-only floor (REQ-CONSENT-1/2 plumbing). Spawn gates govern EXISTENCE; capability gates govern ACTS — an explicitly distinct invariant (CONTEXT:283, ratified 2026-06-11 Gateway grill).",
2026-06-21T23:42:57.8062163Z       "requiredStages": [
2026-06-21T23:42:57.8062367Z         "doc",
2026-06-21T23:42:57.8062534Z         "impl",
2026-06-21T23:42:57.8062706Z         "unit",
2026-06-21T23:42:57.8062881Z         "int"
2026-06-21T23:42:57.8063049Z       ],
2026-06-21T23:42:57.8063215Z       "stages": {
2026-06-21T23:42:57.8063388Z         "doc": {
2026-06-21T23:42:57.8063564Z           "complete": true,
2026-06-21T23:42:57.8063768Z           "evidence": [
2026-06-21T23:42:57.8063951Z             {
2026-06-21T23:42:57.8064125Z               "path": "CONTEXT.md",
2026-06-21T23:42:57.8064345Z               "line": 304
2026-06-21T23:42:57.8064518Z             }
2026-06-21T23:42:57.8064682Z           ]
2026-06-21T23:42:57.8064847Z         },
2026-06-21T23:42:57.8065015Z         "impl": {
2026-06-21T23:42:57.8065191Z           "complete": true,
2026-06-21T23:42:57.8065387Z           "evidence": [
2026-06-21T23:42:57.8065569Z             {
2026-06-21T23:42:57.8065787Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T23:42:57.8066040Z               "line": 123
2026-06-21T23:42:57.8066232Z             },
2026-06-21T23:42:57.8066397Z             {
2026-06-21T23:42:57.8066593Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T23:42:57.8066684Z               "line": 162
2026-06-21T23:42:57.8066775Z             },
2026-06-21T23:42:57.8066857Z             {
2026-06-21T23:42:57.8066983Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T23:42:57.8067073Z               "line": 291
2026-06-21T23:42:57.8067159Z             },
2026-06-21T23:42:57.8067240Z             {
2026-06-21T23:42:57.8067367Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:42:57.8067453Z               "line": 574
2026-06-21T23:42:57.8067544Z             },
2026-06-21T23:42:57.8067634Z             {
2026-06-21T23:42:57.8067743Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:42:57.8067830Z               "line": 824
2026-06-21T23:42:57.8067916Z             },
2026-06-21T23:42:57.8067996Z             {
2026-06-21T23:42:57.8068092Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.8068197Z               "line": 6965
2026-06-21T23:42:57.8068287Z             }
2026-06-21T23:42:57.8068363Z           ]
2026-06-21T23:42:57.8068455Z         },
2026-06-21T23:42:57.8068535Z         "int": {
2026-06-21T23:42:57.8068635Z           "complete": true,
2026-06-21T23:42:57.8068717Z           "evidence": [
2026-06-21T23:42:57.8068803Z             {
2026-06-21T23:42:57.8068931Z               "path": "crates/spt/tests/shell_actgate_e2e.rs",
2026-06-21T23:42:57.8069221Z               "line": 16
2026-06-21T23:42:57.8069308Z             }
2026-06-21T23:42:57.8069395Z           ]
2026-06-21T23:42:57.8069480Z         },
2026-06-21T23:42:57.8069560Z         "unit": {
2026-06-21T23:42:57.8069659Z           "complete": true,
2026-06-21T23:42:57.8069750Z           "evidence": [
2026-06-21T23:42:57.8069829Z             {
2026-06-21T23:42:57.8069957Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T23:42:57.8070053Z               "line": 1019
2026-06-21T23:42:57.8070135Z             },
2026-06-21T23:42:57.8070215Z             {
2026-06-21T23:42:57.8070339Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T23:42:57.8070544Z               "line": 1066
2026-06-21T23:42:57.8070630Z             },
2026-06-21T23:42:57.8070721Z             {
2026-06-21T23:42:57.8070835Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:42:57.8070920Z               "line": 1394
2026-06-21T23:42:57.8071008Z             }
2026-06-21T23:42:57.8071092Z           ]
2026-06-21T23:42:57.8071178Z         }
2026-06-21T23:42:57.8071254Z       }
2026-06-21T23:42:57.8071351Z     },
2026-06-21T23:42:57.8071431Z     {
2026-06-21T23:42:57.8071531Z       "id": "REQ-CONV-1",
2026-06-21T23:42:57.8072927Z       "title": "Peer address seeding, both cold starts: durable peer-addrs.json (identity dir) maps peer pubkey → last-known dialable address; the pump's resolver consults it FIRST with id-only discovery fallback on miss or dial failure (a stale addr never strands a peer); written by the pairing ceremony (both sides, from the live connection) and by the pump on successful connect; post-join first sync and post-restart resync converge in seconds, not ~1 min (M8 decisions 14, 20)",
2026-06-21T23:42:57.8073131Z       "requiredStages": [
2026-06-21T23:42:57.8073219Z         "impl",
2026-06-21T23:42:57.8073304Z         "unit"
2026-06-21T23:42:57.8073395Z       ],
2026-06-21T23:42:57.8073480Z       "stages": {
2026-06-21T23:42:57.8073562Z         "doc": {
2026-06-21T23:42:57.8073657Z           "complete": false,
2026-06-21T23:42:57.8073752Z           "evidence": []
2026-06-21T23:42:57.8073848Z         },
2026-06-21T23:42:57.8073929Z         "impl": {
2026-06-21T23:42:57.8074024Z           "complete": true,
2026-06-21T23:42:57.8074109Z           "evidence": [
2026-06-21T23:42:57.8074201Z             {
2026-06-21T23:42:57.8074329Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T23:42:57.8074419Z               "line": 988
2026-06-21T23:42:57.8074497Z             },
2026-06-21T23:42:57.8074578Z             {
2026-06-21T23:42:57.8074700Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T23:42:57.8074795Z               "line": 94
2026-06-21T23:42:57.8074871Z             },
2026-06-21T23:42:57.8074956Z             {
2026-06-21T23:42:57.8075069Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T23:42:57.8075155Z               "line": 345
2026-06-21T23:42:57.8075242Z             },
2026-06-21T23:42:57.8075322Z             {
2026-06-21T23:42:57.8075441Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T23:42:57.8075528Z               "line": 387
2026-06-21T23:42:57.8075618Z             },
2026-06-21T23:42:57.8075698Z             {
2026-06-21T23:42:57.8075809Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T23:42:57.8075904Z               "line": 472
2026-06-21T23:42:57.8075984Z             },
2026-06-21T23:42:57.8076076Z             {
2026-06-21T23:42:57.8076195Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T23:42:57.8076281Z               "line": 667
2026-06-21T23:42:57.8076362Z             },
2026-06-21T23:42:57.8076453Z             {
2026-06-21T23:42:57.8076582Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T23:42:57.8076681Z               "line": 693
2026-06-21T23:42:57.8076768Z             },
2026-06-21T23:42:57.8076853Z             {
2026-06-21T23:42:57.8076976Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T23:42:57.8077068Z               "line": 369
2026-06-21T23:42:57.8077154Z             },
2026-06-21T23:42:57.8077229Z             {
2026-06-21T23:42:57.8077350Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-21T23:42:57.8077441Z               "line": 19
2026-06-21T23:42:57.8077524Z             }
2026-06-21T23:42:57.8077619Z           ]
2026-06-21T23:42:57.8077700Z         },
2026-06-21T23:42:57.8077795Z         "int": {
2026-06-21T23:42:57.8077884Z           "complete": false,
2026-06-21T23:42:57.8077979Z           "evidence": []
2026-06-21T23:42:57.8078071Z         },
2026-06-21T23:42:57.8078157Z         "unit": {
2026-06-21T23:42:57.8078251Z           "complete": true,
2026-06-21T23:42:57.8078433Z           "evidence": [
2026-06-21T23:42:57.8078523Z             {
2026-06-21T23:42:57.8078633Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T23:42:57.8078724Z               "line": 1263
2026-06-21T23:42:57.8078810Z             },
2026-06-21T23:42:57.8078885Z             {
2026-06-21T23:42:57.8079085Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-21T23:42:57.8079176Z               "line": 108
2026-06-21T23:42:57.8079262Z             },
2026-06-21T23:42:57.8079335Z             {
2026-06-21T23:42:57.8079462Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-21T23:42:57.8079654Z               "line": 134
2026-06-21T23:42:57.8079729Z             },
2026-06-21T23:42:57.8079810Z             {
2026-06-21T23:42:57.8079926Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-21T23:42:57.8080021Z               "line": 144
2026-06-21T23:42:57.8080115Z             }
2026-06-21T23:42:57.8080190Z           ]
2026-06-21T23:42:57.8080282Z         }
2026-06-21T23:42:57.8080361Z       }
2026-06-21T23:42:57.8080446Z     },
2026-06-21T23:42:57.8080531Z     {
2026-06-21T23:42:57.8080628Z       "id": "REQ-CONV-2",
2026-06-21T23:42:57.8081710Z       "title": "Event-driven advertisement: endpoint online/offline transitions (ready-listener start/stop, rest-state transition, perch death) trigger an immediate advertise_local + peer push as a WAKE of the existing pump loop (no second advertisement path — epoch lease + visibility gates ride unchanged); the cadence stays the steady-state floor (M8 decision 15)",
2026-06-21T23:42:57.8081810Z       "requiredStages": [
2026-06-21T23:42:57.8081911Z         "impl",
2026-06-21T23:42:57.8081991Z         "unit"
2026-06-21T23:42:57.8082077Z       ],
2026-06-21T23:42:57.8082163Z       "stages": {
2026-06-21T23:42:57.8082249Z         "doc": {
2026-06-21T23:42:57.8082348Z           "complete": false,
2026-06-21T23:42:57.8082425Z           "evidence": []
2026-06-21T23:42:57.8082512Z         },
2026-06-21T23:42:57.8082611Z         "impl": {
2026-06-21T23:42:57.8082702Z           "complete": true,
2026-06-21T23:42:57.8082793Z           "evidence": [
2026-06-21T23:42:57.8082884Z             {
2026-06-21T23:42:57.8083006Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T23:42:57.8083091Z               "line": 409
2026-06-21T23:42:57.8083178Z             },
2026-06-21T23:42:57.8083259Z             {
2026-06-21T23:42:57.8083391Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T23:42:57.8083478Z               "line": 119
2026-06-21T23:42:57.8083559Z             },
2026-06-21T23:42:57.8083640Z             {
2026-06-21T23:42:57.8083769Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:42:57.8083855Z               "line": 841
2026-06-21T23:42:57.8083936Z             },
2026-06-21T23:42:57.8084021Z             {
2026-06-21T23:42:57.8084146Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:42:57.8084241Z               "line": 852
2026-06-21T23:42:57.8084326Z             },
2026-06-21T23:42:57.8084408Z             {
2026-06-21T23:42:57.8084536Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T23:42:57.8084617Z               "line": 334
2026-06-21T23:42:57.8084704Z             },
2026-06-21T23:42:57.8084785Z             {
2026-06-21T23:42:57.8084889Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.8084975Z               "line": 3074
2026-06-21T23:42:57.8085057Z             },
2026-06-21T23:42:57.8085138Z             {
2026-06-21T23:42:57.8085241Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.8085336Z               "line": 3090
2026-06-21T23:42:57.8085417Z             },
2026-06-21T23:42:57.8085502Z             {
2026-06-21T23:42:57.8085610Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.8085692Z               "line": 3170
2026-06-21T23:42:57.8085778Z             }
2026-06-21T23:42:57.8085859Z           ]
2026-06-21T23:42:57.8086054Z         },
2026-06-21T23:42:57.8086150Z         "int": {
2026-06-21T23:42:57.8086244Z           "complete": false,
2026-06-21T23:42:57.8086336Z           "evidence": []
2026-06-21T23:42:57.8086422Z         },
2026-06-21T23:42:57.8086512Z         "unit": {
2026-06-21T23:42:57.8086597Z           "complete": true,
2026-06-21T23:42:57.8086679Z           "evidence": [
2026-06-21T23:42:57.8086765Z             {
2026-06-21T23:42:57.8086878Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T23:42:57.8086980Z               "line": 889
2026-06-21T23:42:57.8087061Z             },
2026-06-21T23:42:57.8087146Z             {
2026-06-21T23:42:57.8087260Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T23:42:57.8087423Z               "line": 1014
2026-06-21T23:42:57.8087504Z             },
2026-06-21T23:42:57.8087775Z             {
2026-06-21T23:42:57.8087953Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T23:42:57.8096448Z               "line": 215
2026-06-21T23:42:57.8096591Z             }
2026-06-21T23:42:57.8096682Z           ]
2026-06-21T23:42:57.8096771Z         }
2026-06-21T23:42:57.8096847Z       }
2026-06-21T23:42:57.8096925Z     },
2026-06-21T23:42:57.8097001Z     {
2026-06-21T23:42:57.8097100Z       "id": "REQ-DAEMON-1",
2026-06-21T23:42:57.8097278Z       "title": "One per-machine spt-daemon owning all per-machine state",
2026-06-21T23:42:57.8097382Z       "requiredStages": [
2026-06-21T23:42:57.8097472Z         "impl",
2026-06-21T23:42:57.8097555Z         "unit",
2026-06-21T23:42:57.8097639Z         "int"
2026-06-21T23:42:57.8097720Z       ],
2026-06-21T23:42:57.8097816Z       "stages": {
2026-06-21T23:42:57.8097898Z         "doc": {
2026-06-21T23:42:57.8098002Z           "complete": false,
2026-06-21T23:42:57.8098092Z           "evidence": []
2026-06-21T23:42:57.8098170Z         },
2026-06-21T23:42:57.8098260Z         "impl": {
2026-06-21T23:42:57.8098364Z           "complete": true,
2026-06-21T23:42:57.8098465Z           "evidence": [
2026-06-21T23:42:57.8098551Z             {
2026-06-21T23:42:57.8098692Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:42:57.8098773Z               "line": 229
2026-06-21T23:42:57.8098854Z             },
2026-06-21T23:42:57.8098934Z             {
2026-06-21T23:42:57.8099124Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T23:42:57.8099220Z               "line": 12
2026-06-21T23:42:57.8099300Z             },
2026-06-21T23:42:57.8099390Z             {
2026-06-21T23:42:57.8099520Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T23:42:57.8099601Z               "line": 16
2026-06-21T23:42:57.8099686Z             },
2026-06-21T23:42:57.8099768Z             {
2026-06-21T23:42:57.8099891Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T23:42:57.8099982Z               "line": 309
2026-06-21T23:42:57.8100058Z             },
2026-06-21T23:42:57.8100150Z             {
2026-06-21T23:42:57.8100269Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:42:57.8100359Z               "line": 24
2026-06-21T23:42:57.8100445Z             },
2026-06-21T23:42:57.8100531Z             {
2026-06-21T23:42:57.8100639Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:42:57.8100727Z               "line": 262
2026-06-21T23:42:57.8100813Z             },
2026-06-21T23:42:57.8100897Z             {
2026-06-21T23:42:57.8101012Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:42:57.8101099Z               "line": 279
2026-06-21T23:42:57.8101179Z             },
2026-06-21T23:42:57.8101264Z             {
2026-06-21T23:42:57.8101383Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:42:57.8101482Z               "line": 356
2026-06-21T23:42:57.8101566Z             },
2026-06-21T23:42:57.8101647Z             {
2026-06-21T23:42:57.8101758Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:42:57.8101848Z               "line": 670
2026-06-21T23:42:57.8101933Z             },
2026-06-21T23:42:57.8102163Z             {
2026-06-21T23:42:57.8102277Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-21T23:42:57.8102364Z               "line": 15
2026-06-21T23:42:57.8102453Z             },
2026-06-21T23:42:57.8102538Z             {
2026-06-21T23:42:57.8102659Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T23:42:57.8102745Z               "line": 241
2026-06-21T23:42:57.8102826Z             },
2026-06-21T23:42:57.8102906Z             {
2026-06-21T23:42:57.8103012Z               "path": "crates/spt/src/api/live.rs",
2026-06-21T23:42:57.8103097Z               "line": 13
2026-06-21T23:42:57.8103178Z             },
2026-06-21T23:42:57.8103365Z             {
2026-06-21T23:42:57.8103483Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:42:57.8103569Z               "line": 382
2026-06-21T23:42:57.8103652Z             },
2026-06-21T23:42:57.8103731Z             {
2026-06-21T23:42:57.8103836Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:42:57.8103928Z               "line": 494
2026-06-21T23:42:57.8104009Z             }
2026-06-21T23:42:57.8104097Z           ]
2026-06-21T23:42:57.8104178Z         },
2026-06-21T23:42:57.8104259Z         "int": {
2026-06-21T23:42:57.8104346Z           "complete": true,
2026-06-21T23:42:57.8104436Z           "evidence": [
2026-06-21T23:42:57.8104512Z             {
2026-06-21T23:42:57.8104665Z               "path": "crates/spt-daemon/tests/daemon_lifecycle_real_brain.rs",
2026-06-21T23:42:57.8104760Z               "line": 2
2026-06-21T23:42:57.8104840Z             },
2026-06-21T23:42:57.8104923Z             {
2026-06-21T23:42:57.8105070Z               "path": "crates/spt-daemon/tests/daemon_lifecycle_real_brain.rs",
2026-06-21T23:42:57.8105165Z               "line": 16
2026-06-21T23:42:57.8105243Z             },
2026-06-21T23:42:57.8105323Z             {
2026-06-21T23:42:57.8105466Z               "path": "crates/spt/tests/live_bind_firsthost_e2e.rs",
2026-06-21T23:42:57.8105557Z               "line": 12
2026-06-21T23:42:57.8105642Z             },
2026-06-21T23:42:57.8105723Z             {
2026-06-21T23:42:57.8105853Z               "path": "crates/spt/tests/live_firsthost_e2e.rs",
2026-06-21T23:42:57.8105938Z               "line": 12
2026-06-21T23:42:57.8106028Z             },
2026-06-21T23:42:57.8106105Z             {
2026-06-21T23:42:57.8106235Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-21T23:42:57.8106319Z               "line": 44
2026-06-21T23:42:57.8106399Z             }
2026-06-21T23:42:57.8106485Z           ]
2026-06-21T23:42:57.8106556Z         },
2026-06-21T23:42:57.8106641Z         "unit": {
2026-06-21T23:42:57.8106744Z           "complete": true,
2026-06-21T23:42:57.8106826Z           "evidence": [
2026-06-21T23:42:57.8106908Z             {
2026-06-21T23:42:57.8107026Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T23:42:57.8107122Z               "line": 285
2026-06-21T23:42:57.8107204Z             },
2026-06-21T23:42:57.8107293Z             {
2026-06-21T23:42:57.8107412Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T23:42:57.8107499Z               "line": 293
2026-06-21T23:42:57.8107589Z             },
2026-06-21T23:42:57.8107670Z             {
2026-06-21T23:42:57.8107781Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T23:42:57.8107871Z               "line": 309
2026-06-21T23:42:57.8107951Z             },
2026-06-21T23:42:57.8108037Z             {
2026-06-21T23:42:57.8108148Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T23:42:57.8108238Z               "line": 317
2026-06-21T23:42:57.8108324Z             },
2026-06-21T23:42:57.8108444Z             {
2026-06-21T23:42:57.8108566Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T23:42:57.8108652Z               "line": 659
2026-06-21T23:42:57.8108725Z             },
2026-06-21T23:42:57.8108806Z             {
2026-06-21T23:42:57.8108924Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T23:42:57.8109215Z               "line": 729
2026-06-21T23:42:57.8109304Z             },
2026-06-21T23:42:57.8109386Z             {
2026-06-21T23:42:57.8109494Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:42:57.8109588Z               "line": 1211
2026-06-21T23:42:57.8109669Z             },
2026-06-21T23:42:57.8109751Z             {
2026-06-21T23:42:57.8109865Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:42:57.8109945Z               "line": 1248
2026-06-21T23:42:57.8110037Z             },
2026-06-21T23:42:57.8110118Z             {
2026-06-21T23:42:57.8110227Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:42:57.8110400Z               "line": 1271
2026-06-21T23:42:57.8110486Z             },
2026-06-21T23:42:57.8110570Z             {
2026-06-21T23:42:57.8110686Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:42:57.8110776Z               "line": 1300
2026-06-21T23:42:57.8110857Z             },
2026-06-21T23:42:57.8110943Z             {
2026-06-21T23:42:57.8111048Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:42:57.8111133Z               "line": 1348
2026-06-21T23:42:57.8111219Z             },
2026-06-21T23:42:57.8111306Z             {
2026-06-21T23:42:57.8111420Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:42:57.8111501Z               "line": 1391
2026-06-21T23:42:57.8111582Z             },
2026-06-21T23:42:57.8111664Z             {
2026-06-21T23:42:57.8111786Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-21T23:42:57.8111871Z               "line": 106
2026-06-21T23:42:57.8111957Z             },
2026-06-21T23:42:57.8112047Z             {
2026-06-21T23:42:57.8112150Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-21T23:42:57.8112231Z               "line": 132
2026-06-21T23:42:57.8112313Z             },
2026-06-21T23:42:57.8112399Z             {
2026-06-21T23:42:57.8112508Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T23:42:57.8112594Z               "line": 530
2026-06-21T23:42:57.8112670Z             }
2026-06-21T23:42:57.8112747Z           ]
2026-06-21T23:42:57.8112832Z         }
2026-06-21T23:42:57.8112914Z       }
2026-06-21T23:42:57.8112995Z     },
2026-06-21T23:42:57.8113076Z     {
2026-06-21T23:42:57.8113166Z       "id": "REQ-DAEMON-2",
2026-06-21T23:42:57.8113310Z       "title": "Broker/brain split for seamless self-update",
2026-06-21T23:42:57.8113391Z       "requiredStages": [
2026-06-21T23:42:57.8113471Z         "impl",
2026-06-21T23:42:57.8113544Z         "unit",
2026-06-21T23:42:57.8113634Z         "int"
2026-06-21T23:42:57.8113715Z       ],
2026-06-21T23:42:57.8113800Z       "stages": {
2026-06-21T23:42:57.8113887Z         "doc": {
2026-06-21T23:42:57.8113972Z           "complete": true,
2026-06-21T23:42:57.8114062Z           "evidence": [
2026-06-21T23:42:57.8114144Z             {
2026-06-21T23:42:57.8114259Z               "path": "docs/TWO-HOST-RUNBOOK.md",
2026-06-21T23:42:57.8114348Z               "line": 250
2026-06-21T23:42:57.8114435Z             }
2026-06-21T23:42:57.8114517Z           ]
2026-06-21T23:42:57.8114602Z         },
2026-06-21T23:42:57.8114681Z         "impl": {
2026-06-21T23:42:57.8114766Z           "complete": true,
2026-06-21T23:42:57.8114858Z           "evidence": [
2026-06-21T23:42:57.8114931Z             {
2026-06-21T23:42:57.8115039Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T23:42:57.8115125Z               "line": 23
2026-06-21T23:42:57.8115211Z             },
2026-06-21T23:42:57.8115292Z             {
2026-06-21T23:42:57.8115401Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T23:42:57.8115488Z               "line": 922
2026-06-21T23:42:57.8115578Z             },
2026-06-21T23:42:57.8115653Z             {
2026-06-21T23:42:57.8115764Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T23:42:57.8115846Z               "line": 963
2026-06-21T23:42:57.8115931Z             },
2026-06-21T23:42:57.8116016Z             {
2026-06-21T23:42:57.8116202Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T23:42:57.8116288Z               "line": 1199
2026-06-21T23:42:57.8116374Z             },
2026-06-21T23:42:57.8116461Z             {
2026-06-21T23:42:57.8116574Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:42:57.8116665Z               "line": 32
2026-06-21T23:42:57.8116747Z             },
2026-06-21T23:42:57.8116837Z             {
2026-06-21T23:42:57.8116946Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:42:57.8117031Z               "line": 1228
2026-06-21T23:42:57.8117112Z             },
2026-06-21T23:42:57.8117263Z             {
2026-06-21T23:42:57.8117367Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:42:57.8117454Z               "line": 2064
2026-06-21T23:42:57.8117539Z             },
2026-06-21T23:42:57.8117624Z             {
2026-06-21T23:42:57.8117730Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:42:57.8117821Z               "line": 2351
2026-06-21T23:42:57.8117896Z             },
2026-06-21T23:42:57.8117982Z             {
2026-06-21T23:42:57.8118093Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-21T23:42:57.8118173Z               "line": 11
2026-06-21T23:42:57.8118259Z             },
2026-06-21T23:42:57.8118336Z             {
2026-06-21T23:42:57.8118483Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:42:57.8118569Z               "line": 153
2026-06-21T23:42:57.8118655Z             },
2026-06-21T23:42:57.8118736Z             {
2026-06-21T23:42:57.8118850Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:42:57.8119032Z               "line": 343
2026-06-21T23:42:57.8119117Z             },
2026-06-21T23:42:57.8119198Z             {
2026-06-21T23:42:57.8119309Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T23:42:57.8119413Z               "line": 13
2026-06-21T23:42:57.8119499Z             },
2026-06-21T23:42:57.8119576Z             {
2026-06-21T23:42:57.8119700Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T23:42:57.8119775Z               "line": 27
2026-06-21T23:42:57.8119864Z             },
2026-06-21T23:42:57.8119946Z             {
2026-06-21T23:42:57.8120054Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T23:42:57.8120135Z               "line": 173
2026-06-21T23:42:57.8120225Z             },
2026-06-21T23:42:57.8120306Z             {
2026-06-21T23:42:57.8120416Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T23:42:57.8120496Z               "line": 682
2026-06-21T23:42:57.8120578Z             },
2026-06-21T23:42:57.8120660Z             {
2026-06-21T23:42:57.8120768Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T23:42:57.8120849Z               "line": 903
2026-06-21T23:42:57.8120927Z             },
2026-06-21T23:42:57.8121007Z             {
2026-06-21T23:42:57.8121116Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T23:42:57.8121212Z               "line": 1050
2026-06-21T23:42:57.8121294Z             },
2026-06-21T23:42:57.8121379Z             {
2026-06-21T23:42:57.8121488Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T23:42:57.8121570Z               "line": 1139
2026-06-21T23:42:57.8121655Z             },
2026-06-21T23:42:57.8121741Z             {
2026-06-21T23:42:57.8121847Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T23:42:57.8121933Z               "line": 1261
2026-06-21T23:42:57.8122022Z             },
2026-06-21T23:42:57.8122103Z             {
2026-06-21T23:42:57.8122229Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-21T23:42:57.8122327Z               "line": 10
2026-06-21T23:42:57.8122408Z             }
2026-06-21T23:42:57.8122489Z           ]
2026-06-21T23:42:57.8122574Z         },
2026-06-21T23:42:57.8122654Z         "int": {
2026-06-21T23:42:57.8122739Z           "complete": true,
2026-06-21T23:42:57.8122835Z           "evidence": [
2026-06-21T23:42:57.8123025Z             {
2026-06-21T23:42:57.8123140Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T23:42:57.8123231Z               "line": 17
2026-06-21T23:42:57.8123316Z             },
2026-06-21T23:42:57.8123397Z             {
2026-06-21T23:42:57.8123522Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T23:42:57.8123603Z               "line": 90
2026-06-21T23:42:57.8123687Z             },
2026-06-21T23:42:57.8123770Z             {
2026-06-21T23:42:57.8123889Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T23:42:57.8123979Z               "line": 110
2026-06-21T23:42:57.8124065Z             },
2026-06-21T23:42:57.8124231Z             {
2026-06-21T23:42:57.8124356Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T23:42:57.8124442Z               "line": 186
2026-06-21T23:42:57.8124527Z             },
2026-06-21T23:42:57.8124614Z             {
2026-06-21T23:42:57.8124734Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T23:42:57.8124824Z               "line": 309
2026-06-21T23:42:57.8124894Z             },
2026-06-21T23:42:57.8124975Z             {
2026-06-21T23:42:57.8125086Z               "path": "crates/spt-daemon/tests/netstream.rs",
2026-06-21T23:42:57.8125171Z               "line": 128
2026-06-21T23:42:57.8125256Z             },
2026-06-21T23:42:57.8125346Z             {
2026-06-21T23:42:57.8125476Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-21T23:42:57.8125556Z               "line": 59
2026-06-21T23:42:57.8125637Z             }
2026-06-21T23:42:57.8125718Z           ]
2026-06-21T23:42:57.8125799Z         },
2026-06-21T23:42:57.8125890Z         "unit": {
2026-06-21T23:42:57.8125971Z           "complete": true,
2026-06-21T23:42:57.8126058Z           "evidence": [
2026-06-21T23:42:57.8126143Z             {
2026-06-21T23:42:57.8126257Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-21T23:42:57.8126343Z               "line": 62
2026-06-21T23:42:57.8126434Z             },
2026-06-21T23:42:57.8126520Z             {
2026-06-21T23:42:57.8126629Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-21T23:42:57.8126721Z               "line": 76
2026-06-21T23:42:57.8126800Z             },
2026-06-21T23:42:57.8126886Z             {
2026-06-21T23:42:57.8126997Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-21T23:42:57.8127087Z               "line": 88
2026-06-21T23:42:57.8127177Z             },
2026-06-21T23:42:57.8127263Z             {
2026-06-21T23:42:57.8127379Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T23:42:57.8127463Z               "line": 347
2026-06-21T23:42:57.8127553Z             },
2026-06-21T23:42:57.8127634Z             {
2026-06-21T23:42:57.8127738Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T23:42:57.8127818Z               "line": 901
2026-06-21T23:42:57.8127903Z             },
2026-06-21T23:42:57.8127990Z             {
2026-06-21T23:42:57.8128094Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T23:42:57.8128203Z               "line": 909
2026-06-21T23:42:57.8128285Z             },
2026-06-21T23:42:57.8128400Z             {
2026-06-21T23:42:57.8128527Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T23:42:57.8128610Z               "line": 926
2026-06-21T23:42:57.8128700Z             },
2026-06-21T23:42:57.8128780Z             {
2026-06-21T23:42:57.8128891Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T23:42:57.8129039Z               "line": 1035
2026-06-21T23:42:57.8129124Z             },
2026-06-21T23:42:57.8129201Z             {
2026-06-21T23:42:57.8129319Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T23:42:57.8129444Z               "line": 1370
2026-06-21T23:42:57.8129526Z             },
2026-06-21T23:42:57.8129607Z             {
2026-06-21T23:42:57.8129715Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T23:42:57.8129806Z               "line": 1382
2026-06-21T23:42:57.8129991Z             },
2026-06-21T23:42:57.8130078Z             {
2026-06-21T23:42:57.8130199Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-21T23:42:57.8130283Z               "line": 110
2026-06-21T23:42:57.8130368Z             },
2026-06-21T23:42:57.8130453Z             {
2026-06-21T23:42:57.8130568Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-21T23:42:57.8130661Z               "line": 145
2026-06-21T23:42:57.8130737Z             }
2026-06-21T23:42:57.8130823Z           ]
2026-06-21T23:42:57.8130900Z         }
2026-06-21T23:42:57.8130985Z       }
2026-06-21T23:42:57.8131066Z     },
2026-06-21T23:42:57.8131148Z     {
2026-06-21T23:42:57.8131333Z       "id": "REQ-DAEMON-3",
2026-06-21T23:42:57.8131487Z       "title": "Any api invocation auto-starts the daemon if absent",
2026-06-21T23:42:57.8131587Z       "requiredStages": [
2026-06-21T23:42:57.8131667Z         "impl",
2026-06-21T23:42:57.8131763Z         "unit",
2026-06-21T23:42:57.8131844Z         "int"
2026-06-21T23:42:57.8131929Z       ],
2026-06-21T23:42:57.8132020Z       "stages": {
2026-06-21T23:42:57.8132102Z         "doc": {
2026-06-21T23:42:57.8132192Z           "complete": false,
2026-06-21T23:42:57.8132282Z           "evidence": []
2026-06-21T23:42:57.8132368Z         },
2026-06-21T23:42:57.8132455Z         "impl": {
2026-06-21T23:42:57.8132549Z           "complete": true,
2026-06-21T23:42:57.8132631Z           "evidence": [
2026-06-21T23:42:57.8132703Z             {
2026-06-21T23:42:57.8132822Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:42:57.8132911Z               "line": 14
2026-06-21T23:42:57.8132996Z             },
2026-06-21T23:42:57.8133083Z             {
2026-06-21T23:42:57.8133204Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-21T23:42:57.8133299Z               "line": 11
2026-06-21T23:42:57.8133371Z             },
2026-06-21T23:42:57.8133462Z             {
2026-06-21T23:42:57.8133567Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T23:42:57.8133666Z               "line": 305
2026-06-21T23:42:57.8133748Z             },
2026-06-21T23:42:57.8133839Z             {
2026-06-21T23:42:57.8133942Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.8134025Z               "line": 1956
2026-06-21T23:42:57.8134115Z             },
2026-06-21T23:42:57.8134201Z             {
2026-06-21T23:42:57.8134306Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.8134387Z               "line": 4235
2026-06-21T23:42:57.8134472Z             },
2026-06-21T23:42:57.8134563Z             {
2026-06-21T23:42:57.8134664Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.8134754Z               "line": 4256
2026-06-21T23:42:57.8134840Z             }
2026-06-21T23:42:57.8134920Z           ]
2026-06-21T23:42:57.8135003Z         },
2026-06-21T23:42:57.8135097Z         "int": {
2026-06-21T23:42:57.8135197Z           "complete": true,
2026-06-21T23:42:57.8135284Z           "evidence": [
2026-06-21T23:42:57.8135370Z             {
2026-06-21T23:42:57.8135498Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T23:42:57.8135579Z               "line": 49
2026-06-21T23:42:57.8135661Z             },
2026-06-21T23:42:57.8135745Z             {
2026-06-21T23:42:57.8135854Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T23:42:57.8135935Z               "line": 487
2026-06-21T23:42:57.8136022Z             }
2026-06-21T23:42:57.8136107Z           ]
2026-06-21T23:42:57.8136192Z         },
2026-06-21T23:42:57.8136279Z         "unit": {
2026-06-21T23:42:57.8136364Z           "complete": true,
2026-06-21T23:42:57.8136459Z           "evidence": [
2026-06-21T23:42:57.8136540Z             {
2026-06-21T23:42:57.8136665Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:42:57.8136751Z               "line": 1553
2026-06-21T23:42:57.8136846Z             },
2026-06-21T23:42:57.8136932Z             {
2026-06-21T23:42:57.8137031Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.8137233Z               "line": 10715
2026-06-21T23:42:57.8137314Z             }
2026-06-21T23:42:57.8137400Z           ]
2026-06-21T23:42:57.8137480Z         }
2026-06-21T23:42:57.8137562Z       }
2026-06-21T23:42:57.8137647Z     },
2026-06-21T23:42:57.8137738Z     {
2026-06-21T23:42:57.8137833Z       "id": "REQ-DAEMON-4",
2026-06-21T23:42:57.8137943Z       "title": "Honor every KNOWN-HAZARDS invariant",
2026-06-21T23:42:57.8138042Z       "requiredStages": [
2026-06-21T23:42:57.8138127Z         "impl",
2026-06-21T23:42:57.8138204Z         "unit",
2026-06-21T23:42:57.8138284Z         "int"
2026-06-21T23:42:57.8138378Z       ],
2026-06-21T23:42:57.8138483Z       "stages": {
2026-06-21T23:42:57.8138636Z         "doc": {
2026-06-21T23:42:57.8138730Z           "complete": false,
2026-06-21T23:42:57.8138817Z           "evidence": []
2026-06-21T23:42:57.8138898Z         },
2026-06-21T23:42:57.8139374Z         "impl": {
2026-06-21T23:42:57.8139480Z           "complete": true,
2026-06-21T23:42:57.8139560Z           "evidence": [
2026-06-21T23:42:57.8139651Z             {
2026-06-21T23:42:57.8139771Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T23:42:57.8139857Z               "line": 464
2026-06-21T23:42:57.8139938Z             },
2026-06-21T23:42:57.8140013Z             {
2026-06-21T23:42:57.8140129Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T23:42:57.8140213Z               "line": 529
2026-06-21T23:42:57.8140295Z             },
2026-06-21T23:42:57.8140381Z             {
2026-06-21T23:42:57.8140496Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T23:42:57.8140590Z               "line": 551
2026-06-21T23:42:57.8140686Z             }
2026-06-21T23:42:57.8140759Z           ]
2026-06-21T23:42:57.8140843Z         },
2026-06-21T23:42:57.8140928Z         "int": {
2026-06-21T23:42:57.8141018Z           "complete": true,
2026-06-21T23:42:57.8141100Z           "evidence": [
2026-06-21T23:42:57.8141179Z             {
2026-06-21T23:42:57.8141311Z               "path": "crates/spt-daemon/tests/daemon_e2e.rs",
2026-06-21T23:42:57.8141403Z               "line": 42
2026-06-21T23:42:57.8141494Z             }
2026-06-21T23:42:57.8141569Z           ]
2026-06-21T23:42:57.8141655Z         },
2026-06-21T23:42:57.8141737Z         "unit": {
2026-06-21T23:42:57.8141837Z           "complete": true,
2026-06-21T23:42:57.8141917Z           "evidence": [
2026-06-21T23:42:57.8142004Z             {
2026-06-21T23:42:57.8142113Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T23:42:57.8142198Z               "line": 428
2026-06-21T23:42:57.8142284Z             },
2026-06-21T23:42:57.8142357Z             {
2026-06-21T23:42:57.8142480Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T23:42:57.8142571Z               "line": 957
2026-06-21T23:42:57.8142652Z             },
2026-06-21T23:42:57.8142743Z             {
2026-06-21T23:42:57.8142852Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T23:42:57.8142948Z               "line": 1027
2026-06-21T23:42:57.8143034Z             },
2026-06-21T23:42:57.8143123Z             {
2026-06-21T23:42:57.8143248Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T23:42:57.8143330Z               "line": 1057
2026-06-21T23:42:57.8143415Z             },
2026-06-21T23:42:57.8143500Z             {
2026-06-21T23:42:57.8143613Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T23:42:57.8143704Z               "line": 1090
2026-06-21T23:42:57.8143783Z             }
2026-06-21T23:42:57.8143868Z           ]
2026-06-21T23:42:57.8143940Z         }
2026-06-21T23:42:57.8144032Z       }
2026-06-21T23:42:57.8144112Z     },
2026-06-21T23:42:57.8144197Z     {
2026-06-21T23:42:57.8144285Z       "id": "REQ-DAEMON-5",
2026-06-21T23:42:57.8145671Z       "title": "Pump liveness: the peer pump writes a last-tick heartbeat consumed by daemon status / subnet status (decision 23 render legs in REQ-CLI-2/REQ-SUBNET-8); the daemon supervises the pump task — a panic is caught, logged loudly, and the pump restarts with capped backoff (≤5 min), so a 5.9-class death self-heals visibly instead of silently halving the daemon (M8 decision 23; field motivation: hfenduleam 2026-06-07 half-death)",
2026-06-21T23:42:57.8145892Z       "requiredStages": [
2026-06-21T23:42:57.8145976Z         "impl",
2026-06-21T23:42:57.8146063Z         "unit"
2026-06-21T23:42:57.8146149Z       ],
2026-06-21T23:42:57.8146240Z       "stages": {
2026-06-21T23:42:57.8146324Z         "doc": {
2026-06-21T23:42:57.8146418Z           "complete": false,
2026-06-21T23:42:57.8146505Z           "evidence": []
2026-06-21T23:42:57.8146577Z         },
2026-06-21T23:42:57.8146658Z         "impl": {
2026-06-21T23:42:57.8146844Z           "complete": true,
2026-06-21T23:42:57.8146944Z           "evidence": [
2026-06-21T23:42:57.8147024Z             {
2026-06-21T23:42:57.8147149Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T23:42:57.8147244Z               "line": 476
2026-06-21T23:42:57.8147325Z             },
2026-06-21T23:42:57.8147425Z             {
2026-06-21T23:42:57.8147550Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T23:42:57.8147635Z               "line": 769
2026-06-21T23:42:57.8147725Z             },
2026-06-21T23:42:57.8147798Z             {
2026-06-21T23:42:57.8147911Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T23:42:57.8147992Z               "line": 782
2026-06-21T23:42:57.8148074Z             },
2026-06-21T23:42:57.8148156Z             {
2026-06-21T23:42:57.8148273Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T23:42:57.8148365Z               "line": 800
2026-06-21T23:42:57.8148466Z             },
2026-06-21T23:42:57.8148565Z             {
2026-06-21T23:42:57.8148673Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T23:42:57.8148768Z               "line": 841
2026-06-21T23:42:57.8148849Z             }
2026-06-21T23:42:57.8149225Z           ]
2026-06-21T23:42:57.8149348Z         },
2026-06-21T23:42:57.8149435Z         "int": {
2026-06-21T23:42:57.8149549Z           "complete": false,
2026-06-21T23:42:57.8149643Z           "evidence": []
2026-06-21T23:42:57.8149721Z         },
2026-06-21T23:42:57.8149797Z         "unit": {
2026-06-21T23:42:57.8149887Z           "complete": true,
2026-06-21T23:42:57.8149982Z           "evidence": [
2026-06-21T23:42:57.8150069Z             {
2026-06-21T23:42:57.8150192Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T23:42:57.8150278Z               "line": 1189
2026-06-21T23:42:57.8150369Z             },
2026-06-21T23:42:57.8150445Z             {
2026-06-21T23:42:57.8150554Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T23:42:57.8150656Z               "line": 1213
2026-06-21T23:42:57.8150741Z             },
2026-06-21T23:42:57.8150826Z             {
2026-06-21T23:42:57.8150931Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T23:42:57.8151028Z               "line": 1239
2026-06-21T23:42:57.8151117Z             }
2026-06-21T23:42:57.8151203Z           ]
2026-06-21T23:42:57.8151290Z         }
2026-06-21T23:42:57.8151367Z       }
2026-06-21T23:42:57.8151450Z     },
2026-06-21T23:42:57.8151536Z     {
2026-06-21T23:42:57.8151636Z       "id": "REQ-DAEMON-6",
2026-06-21T23:42:57.8153604Z       "title": "Service-aware `daemon start`/`stop`: when an OS service manager has a registered spt-daemon for this user, `spt daemon start` and `spt daemon stop` drive THAT service (so stop doesn't IPC-kill a unit that auto-restart-fights for the broker socket — the kitsubito 2026-06-08 loop). `start` graduates from a `run` alias to a first-class background verb (ensure-up, idempotent, non-blocking); stop routes managed→manager, manual→IPC. Linux=systemd user unit (`systemctl --user start|stop|is-active spt-daemon`, detected by unit-file presence); Windows=no controllable manager (the logon task is boot-only), so start=detached spawn / stop=IPC.",
2026-06-21T23:42:57.8153717Z       "requiredStages": [
2026-06-21T23:42:57.8153813Z         "impl",
2026-06-21T23:42:57.8154017Z         "unit"
2026-06-21T23:42:57.8154102Z       ],
2026-06-21T23:42:57.8154193Z       "stages": {
2026-06-21T23:42:57.8154273Z         "doc": {
2026-06-21T23:42:57.8154372Z           "complete": false,
2026-06-21T23:42:57.8154452Z           "evidence": []
2026-06-21T23:42:57.8154539Z         },
2026-06-21T23:42:57.8154630Z         "impl": {
2026-06-21T23:42:57.8154725Z           "complete": true,
2026-06-21T23:42:57.8154825Z           "evidence": [
2026-06-21T23:42:57.8154902Z             {
2026-06-21T23:42:57.8155025Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:42:57.8155111Z               "line": 495
2026-06-21T23:42:57.8155297Z             },
2026-06-21T23:42:57.8155387Z             {
2026-06-21T23:42:57.8155503Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:42:57.8155597Z               "line": 526
2026-06-21T23:42:57.8155668Z             },
2026-06-21T23:42:57.8155740Z             {
2026-06-21T23:42:57.8155855Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T23:42:57.8155955Z               "line": 55
2026-06-21T23:42:57.8156036Z             },
2026-06-21T23:42:57.8156123Z             {
2026-06-21T23:42:57.8156245Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T23:42:57.8156332Z               "line": 70
2026-06-21T23:42:57.8156419Z             },
2026-06-21T23:42:57.8156494Z             {
2026-06-21T23:42:57.8156608Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.8156700Z               "line": 2020
2026-06-21T23:42:57.8156777Z             },
2026-06-21T23:42:57.8156856Z             {
2026-06-21T23:42:57.8156955Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.8157060Z               "line": 2046
2026-06-21T23:42:57.8157147Z             }
2026-06-21T23:42:57.8157232Z           ]
2026-06-21T23:42:57.8157322Z         },
2026-06-21T23:42:57.8157404Z         "int": {
2026-06-21T23:42:57.8157499Z           "complete": false,
2026-06-21T23:42:57.8157589Z           "evidence": []
2026-06-21T23:42:57.8157685Z         },
2026-06-21T23:42:57.8157771Z         "unit": {
2026-06-21T23:42:57.8157866Z           "complete": true,
2026-06-21T23:42:57.8157956Z           "evidence": [
2026-06-21T23:42:57.8158039Z             {
2026-06-21T23:42:57.8158157Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T23:42:57.8158243Z               "line": 288
2026-06-21T23:42:57.8158334Z             },
2026-06-21T23:42:57.8158434Z             {
2026-06-21T23:42:57.8158562Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T23:42:57.8158649Z               "line": 299
2026-06-21T23:42:57.8158734Z             },
2026-06-21T23:42:57.8158829Z             {
2026-06-21T23:42:57.8159016Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T23:42:57.8159171Z               "line": 325
2026-06-21T23:42:57.8159257Z             },
2026-06-21T23:42:57.8159357Z             {
2026-06-21T23:42:57.8159484Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T23:42:57.8159584Z               "line": 351
2026-06-21T23:42:57.8159665Z             }
2026-06-21T23:42:57.8159747Z           ]
2026-06-21T23:42:57.8159827Z         }
2026-06-21T23:42:57.8159908Z       }
2026-06-21T23:42:57.8160000Z     },
2026-06-21T23:42:57.8160085Z     {
2026-06-21T23:42:57.8160179Z       "id": "REQ-DAEMON-7",
2026-06-21T23:42:57.8161564Z       "title": "`daemon run` is foreground-consistent on every platform: the invoking process IS the daemon, blocks until signalled, never auto-detaches or respawns into an invisible background task. The detached/de-elevated background behavior lives ONLY in `start`. Windows: an ELEVATED `daemon run` refuses with guidance (use `start`, or an unelevated shell) instead of respawning detached/de-elevated and vanishing (KH 5.7 preserved — it still never serves elevated).",
2026-06-21T23:42:57.8161668Z       "requiredStages": [
2026-06-21T23:42:57.8161754Z         "impl",
2026-06-21T23:42:57.8161836Z         "unit"
2026-06-21T23:42:57.8162024Z       ],
2026-06-21T23:42:57.8162115Z       "stages": {
2026-06-21T23:42:57.8162196Z         "doc": {
2026-06-21T23:42:57.8162286Z           "complete": false,
2026-06-21T23:42:57.8162375Z           "evidence": []
2026-06-21T23:42:57.8162455Z         },
2026-06-21T23:42:57.8162547Z         "impl": {
2026-06-21T23:42:57.8162643Z           "complete": true,
2026-06-21T23:42:57.8162727Z           "evidence": [
2026-06-21T23:42:57.8162814Z             {
2026-06-21T23:42:57.8162933Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:42:57.8163013Z               "line": 545
2026-06-21T23:42:57.8163104Z             },
2026-06-21T23:42:57.8163186Z             {
2026-06-21T23:42:57.8163433Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T23:42:57.8166320Z               "line": 610
2026-06-21T23:42:57.8166429Z             },
2026-06-21T23:42:57.8166515Z             {
2026-06-21T23:42:57.8166645Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T23:42:57.8166758Z               "line": 89
2026-06-21T23:42:57.8166844Z             },
2026-06-21T23:42:57.8166925Z             {
2026-06-21T23:42:57.8167041Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.8167130Z               "line": 1957
2026-06-21T23:42:57.8167216Z             }
2026-06-21T23:42:57.8167298Z           ]
2026-06-21T23:42:57.8167383Z         },
2026-06-21T23:42:57.8167473Z         "int": {
2026-06-21T23:42:57.8167562Z           "complete": false,
2026-06-21T23:42:57.8167654Z           "evidence": []
2026-06-21T23:42:57.8167736Z         },
2026-06-21T23:42:57.8167820Z         "unit": {
2026-06-21T23:42:57.8167911Z           "complete": true,
2026-06-21T23:42:57.8168012Z           "evidence": [
2026-06-21T23:42:57.8168097Z             {
2026-06-21T23:42:57.8168221Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T23:42:57.8168308Z               "line": 314
2026-06-21T23:42:57.8168389Z             },
2026-06-21T23:42:57.8168474Z             {
2026-06-21T23:42:57.8168584Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.8168674Z               "line": 8102
2026-06-21T23:42:57.8168755Z             }
2026-06-21T23:42:57.8168840Z           ]
2026-06-21T23:42:57.8168923Z         }
2026-06-21T23:42:57.8169103Z       }
2026-06-21T23:42:57.8169190Z     },
2026-06-21T23:42:57.8169266Z     {
2026-06-21T23:42:57.8169360Z       "id": "REQ-DAEMON-8",
2026-06-21T23:42:57.8170364Z       "title": "Internal auto-start prefers the service: `ensure_running` (any spt command's implicit daemon start, REQ-DAEMON-3) routes through the service-aware start path — when a manager has a registered service it starts THAT, never a competing manual `spawn_detached` daemon that would fight the service for the socket.",
2026-06-21T23:42:57.8170468Z       "requiredStages": [
2026-06-21T23:42:57.8170560Z         "impl",
2026-06-21T23:42:57.8170640Z         "unit"
2026-06-21T23:42:57.8170721Z       ],
2026-06-21T23:42:57.8170812Z       "stages": {
2026-06-21T23:42:57.8170894Z         "doc": {
2026-06-21T23:42:57.8170997Z           "complete": false,
2026-06-21T23:42:57.8171083Z           "evidence": []
2026-06-21T23:42:57.8171170Z         },
2026-06-21T23:42:57.8171256Z         "impl": {
2026-06-21T23:42:57.8171346Z           "complete": true,
2026-06-21T23:42:57.8171427Z           "evidence": [
2026-06-21T23:42:57.8171508Z             {
2026-06-21T23:42:57.8171627Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:42:57.8171717Z               "line": 445
2026-06-21T23:42:57.8171795Z             },
2026-06-21T23:42:57.8171880Z             {
2026-06-21T23:42:57.8172004Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T23:42:57.8172091Z               "line": 56
2026-06-21T23:42:57.8172172Z             }
2026-06-21T23:42:57.8172261Z           ]
2026-06-21T23:42:57.8172328Z         },
2026-06-21T23:42:57.8172415Z         "int": {
2026-06-21T23:42:57.8172501Z           "complete": false,
2026-06-21T23:42:57.8172585Z           "evidence": []
2026-06-21T23:42:57.8172808Z         },
2026-06-21T23:42:57.8172892Z         "unit": {
2026-06-21T23:42:57.8172987Z           "complete": true,
2026-06-21T23:42:57.8173074Z           "evidence": [
2026-06-21T23:42:57.8173155Z             {
2026-06-21T23:42:57.8173264Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T23:42:57.8173345Z               "line": 288
2026-06-21T23:42:57.8173432Z             },
2026-06-21T23:42:57.8173508Z             {
2026-06-21T23:42:57.8173626Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-21T23:42:57.8173708Z               "line": 325
2026-06-21T23:42:57.8173794Z             }
2026-06-21T23:42:57.8173875Z           ]
2026-06-21T23:42:57.8174056Z         }
2026-06-21T23:42:57.8174141Z       }
2026-06-21T23:42:57.8174222Z     },
2026-06-21T23:42:57.8174303Z     {
2026-06-21T23:42:57.8174395Z       "id": "REQ-DAEMON-9",
2026-06-21T23:42:57.8176727Z       "title": "Net-bind boot-race resilience: a daemon that comes up net-less (NetHost::start failed — e.g. the systemd unit autostarted before the network/DNS stack was ready, `Failed to create an address lookup service`) must SELF-HEAL — retry the net bring-up in the background with capped backoff and, on success, attach net to the broker + spawn the dispatcher/peer-pump (which today are gated on `net_up` at boot and so never start, leaving the node silently unreachable until a manual restart — kitsubito 2026-06-08). Status surfaces the net-less state honestly (a net-less broker renders as 'no connection', not only a pump-STALLED line with a bogus pre-boot heartbeat age). The installer's autostart unit waits for the network (`Wants=/After=network-online.target`) as belt-and-suspenders.",
2026-06-21T23:42:57.8176846Z       "requiredStages": [
2026-06-21T23:42:57.8176938Z         "impl",
2026-06-21T23:42:57.8177022Z         "unit"
2026-06-21T23:42:57.8177103Z       ],
2026-06-21T23:42:57.8177190Z       "stages": {
2026-06-21T23:42:57.8177267Z         "doc": {
2026-06-21T23:42:57.8177361Z           "complete": false,
2026-06-21T23:42:57.8177457Z           "evidence": []
2026-06-21T23:42:57.8177534Z         },
2026-06-21T23:42:57.8177620Z         "impl": {
2026-06-21T23:42:57.8177714Z           "complete": true,
2026-06-21T23:42:57.8177796Z           "evidence": [
2026-06-21T23:42:57.8177878Z             {
2026-06-21T23:42:57.8178009Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:42:57.8178094Z               "line": 276
2026-06-21T23:42:57.8178176Z             },
2026-06-21T23:42:57.8178257Z             {
2026-06-21T23:42:57.8178380Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:42:57.8178461Z               "line": 1279
2026-06-21T23:42:57.8178548Z             },
2026-06-21T23:42:57.8178629Z             {
2026-06-21T23:42:57.8178748Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:42:57.8178835Z               "line": 197
2026-06-21T23:42:57.8178910Z             },
2026-06-21T23:42:57.8179053Z             {
2026-06-21T23:42:57.8179154Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:42:57.8179249Z               "line": 344
2026-06-21T23:42:57.8179334Z             },
2026-06-21T23:42:57.8179430Z             {
2026-06-21T23:42:57.8179540Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:42:57.8179621Z               "line": 381
2026-06-21T23:42:57.8179706Z             },
2026-06-21T23:42:57.8179784Z             {
2026-06-21T23:42:57.8179892Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.8179983Z               "line": 2075
2026-06-21T23:42:57.8180059Z             }
2026-06-21T23:42:57.8180142Z           ]
2026-06-21T23:42:57.8180221Z         },
2026-06-21T23:42:57.8180315Z         "int": {
2026-06-21T23:42:57.8180411Z           "complete": false,
2026-06-21T23:42:57.8180501Z           "evidence": []
2026-06-21T23:42:57.8180585Z         },
2026-06-21T23:42:57.8180675Z         "unit": {
2026-06-21T23:42:57.8180767Z           "complete": true,
2026-06-21T23:42:57.8180848Z           "evidence": [
2026-06-21T23:42:57.8181047Z             {
2026-06-21T23:42:57.8181158Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:42:57.8181252Z               "line": 1158
2026-06-21T23:42:57.8181323Z             },
2026-06-21T23:42:57.8181411Z             {
2026-06-21T23:42:57.8181506Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.8181591Z               "line": 10580
2026-06-21T23:42:57.8181673Z             }
2026-06-21T23:42:57.8181759Z           ]
2026-06-21T23:42:57.8181854Z         }
2026-06-21T23:42:57.8181943Z       }
2026-06-21T23:42:57.8182021Z     },
2026-06-21T23:42:57.8182092Z     {
2026-06-21T23:42:57.8182183Z       "id": "REQ-DOCS-1",
2026-06-21T23:42:57.8182492Z       "title": "Dual-audience docs (human + AI dev-agent), markdown once / two depths",
2026-06-21T23:42:57.8182573Z       "requiredStages": [
2026-06-21T23:42:57.8182661Z         "doc",
2026-06-21T23:42:57.8182741Z         "impl"
2026-06-21T23:42:57.8182821Z       ],
2026-06-21T23:42:57.8182917Z       "stages": {
2026-06-21T23:42:57.8183000Z         "doc": {
2026-06-21T23:42:57.8183084Z           "complete": true,
2026-06-21T23:42:57.8183164Z           "evidence": [
2026-06-21T23:42:57.8183249Z             {
2026-06-21T23:42:57.8183354Z               "path": "docs-site/src/index.md",
2026-06-21T23:42:57.8183438Z               "line": 50
2026-06-21T23:42:57.8183523Z             }
2026-06-21T23:42:57.8183600Z           ]
2026-06-21T23:42:57.8183687Z         },
2026-06-21T23:42:57.8183767Z         "impl": {
2026-06-21T23:42:57.8183866Z           "complete": true,
2026-06-21T23:42:57.8183949Z           "evidence": [
2026-06-21T23:42:57.8184035Z             {
2026-06-21T23:42:57.8184167Z               "path": ".github/workflows/docs-publish.yml",
2026-06-21T23:42:57.8184249Z               "line": 12
2026-06-21T23:42:57.8184335Z             },
2026-06-21T23:42:57.8184411Z             {
2026-06-21T23:42:57.8184525Z               "path": "crates/xtask/src/main.rs",
2026-06-21T23:42:57.8184611Z               "line": 14
2026-06-21T23:42:57.8184702Z             }
2026-06-21T23:42:57.8184778Z           ]
2026-06-21T23:42:57.8184859Z         },
2026-06-21T23:42:57.8184946Z         "int": {
2026-06-21T23:42:57.8185031Z           "complete": false,
2026-06-21T23:42:57.8185121Z           "evidence": []
2026-06-21T23:42:57.8185198Z         },
2026-06-21T23:42:57.8185289Z         "unit": {
2026-06-21T23:42:57.8185369Z           "complete": false,
2026-06-21T23:42:57.8185455Z           "evidence": []
2026-06-21T23:42:57.8185542Z         }
2026-06-21T23:42:57.8185623Z       }
2026-06-21T23:42:57.8185707Z     },
2026-06-21T23:42:57.8185787Z     {
2026-06-21T23:42:57.8185869Z       "id": "REQ-DOCS-2",
2026-06-21T23:42:57.8186043Z       "title": "Sub-10-minute runnable killer quickstart per audience",
2026-06-21T23:42:57.8186142Z       "requiredStages": [
2026-06-21T23:42:57.8186234Z         "doc",
2026-06-21T23:42:57.8186316Z         "int"
2026-06-21T23:42:57.8186400Z       ],
2026-06-21T23:42:57.8186481Z       "stages": {
2026-06-21T23:42:57.8186578Z         "doc": {
2026-06-21T23:42:57.8186668Z           "complete": true,
2026-06-21T23:42:57.8186758Z           "evidence": [
2026-06-21T23:42:57.8186849Z             {
2026-06-21T23:42:57.8187015Z               "path": "docs-site/src/harness-contract/integration-checklist.md",
2026-06-21T23:42:57.8187096Z               "line": 3
2026-06-21T23:42:57.8187183Z             },
2026-06-21T23:42:57.8187268Z             {
2026-06-21T23:42:57.8187387Z               "path": "docs-site/src/quickstart/adapter.md",
2026-06-21T23:42:57.8187474Z               "line": 3
2026-06-21T23:42:57.8187560Z             },
2026-06-21T23:42:57.8187641Z             {
2026-06-21T23:42:57.8187770Z               "path": "docs-site/src/quickstart/messaging.md",
2026-06-21T23:42:57.8187860Z               "line": 3
2026-06-21T23:42:57.8187945Z             }
2026-06-21T23:42:57.8188026Z           ]
2026-06-21T23:42:57.8188113Z         },
2026-06-21T23:42:57.8188194Z         "impl": {
2026-06-21T23:42:57.8188274Z           "complete": false,
2026-06-21T23:42:57.8188438Z           "evidence": []
2026-06-21T23:42:57.8188523Z         },
2026-06-21T23:42:57.8188602Z         "int": {
2026-06-21T23:42:57.8188697Z           "complete": true,
2026-06-21T23:42:57.8188779Z           "evidence": [
2026-06-21T23:42:57.8188866Z             {
2026-06-21T23:42:57.8189060Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-21T23:42:57.8189151Z               "line": 14
2026-06-21T23:42:57.8189236Z             }
2026-06-21T23:42:57.8189317Z           ]
2026-06-21T23:42:57.8189409Z         },
2026-06-21T23:42:57.8189489Z         "unit": {
2026-06-21T23:42:57.8189579Z           "complete": false,
2026-06-21T23:42:57.8189767Z           "evidence": []
2026-06-21T23:42:57.8189847Z         }
2026-06-21T23:42:57.8189927Z       }
2026-06-21T23:42:57.8190014Z     },
2026-06-21T23:42:57.8190095Z     {
2026-06-21T23:42:57.8190181Z       "id": "REQ-DOCS-3",
2026-06-21T23:42:57.8190387Z       "title": "Diátaxis structure; one canonical way to do X",
2026-06-21T23:42:57.8190485Z       "requiredStages": [
2026-06-21T23:42:57.8190562Z         "doc"
2026-06-21T23:42:57.8190644Z       ],
2026-06-21T23:42:57.8190735Z       "stages": {
2026-06-21T23:42:57.8190814Z         "doc": {
2026-06-21T23:42:57.8190899Z           "complete": true,
2026-06-21T23:42:57.8190985Z           "evidence": [
2026-06-21T23:42:57.8191066Z             {
2026-06-21T23:42:57.8191174Z               "path": "docs-site/src/index.md",
2026-06-21T23:42:57.8191254Z               "line": 42
2026-06-21T23:42:57.8191346Z             }
2026-06-21T23:42:57.8191427Z           ]
2026-06-21T23:42:57.8191503Z         },
2026-06-21T23:42:57.8191598Z         "impl": {
2026-06-21T23:42:57.8191680Z           "complete": false,
2026-06-21T23:42:57.8191765Z           "evidence": []
2026-06-21T23:42:57.8191851Z         },
2026-06-21T23:42:57.8191932Z         "int": {
2026-06-21T23:42:57.8192014Z           "complete": false,
2026-06-21T23:42:57.8192099Z           "evidence": []
2026-06-21T23:42:57.8192184Z         },
2026-06-21T23:42:57.8192272Z         "unit": {
2026-06-21T23:42:57.8192361Z           "complete": false,
2026-06-21T23:42:57.8192452Z           "evidence": []
2026-06-21T23:42:57.8192533Z         }
2026-06-21T23:42:57.8192615Z       }
2026-06-21T23:42:57.8192700Z     },
2026-06-21T23:42:57.8192785Z     {
2026-06-21T23:42:57.8192872Z       "id": "REQ-DOCS-4",
2026-06-21T23:42:57.8193071Z       "title": "Agent-consumable layer (llms.txt, manifest schema, MCP, CLI help)",
2026-06-21T23:42:57.8193162Z       "requiredStages": [
2026-06-21T23:42:57.8193250Z         "doc",
2026-06-21T23:42:57.8193338Z         "impl",
2026-06-21T23:42:57.8193420Z         "unit"
2026-06-21T23:42:57.8193511Z       ],
2026-06-21T23:42:57.8193597Z       "stages": {
2026-06-21T23:42:57.8193681Z         "doc": {
2026-06-21T23:42:57.8193762Z           "complete": true,
2026-06-21T23:42:57.8193847Z           "evidence": [
2026-06-21T23:42:57.8193928Z             {
2026-06-21T23:42:57.8194036Z               "path": "docs/DOCS-STRATEGY.md",
2026-06-21T23:42:57.8194131Z               "line": 35
2026-06-21T23:42:57.8194213Z             }
2026-06-21T23:42:57.8194290Z           ]
2026-06-21T23:42:57.8194361Z         },
2026-06-21T23:42:57.8194446Z         "impl": {
2026-06-21T23:42:57.8194542Z           "complete": true,
2026-06-21T23:42:57.8194628Z           "evidence": [
2026-06-21T23:42:57.8194718Z             {
2026-06-21T23:42:57.8194838Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:42:57.8194928Z               "line": 746
2026-06-21T23:42:57.8195009Z             },
2026-06-21T23:42:57.8195090Z             {
2026-06-21T23:42:57.8195200Z               "path": "crates/xtask/src/main.rs",
2026-06-21T23:42:57.8195290Z               "line": 15
2026-06-21T23:42:57.8195371Z             }
2026-06-21T23:42:57.8195453Z           ]
2026-06-21T23:42:57.8195529Z         },
2026-06-21T23:42:57.8195610Z         "int": {
2026-06-21T23:42:57.8195700Z           "complete": false,
2026-06-21T23:42:57.8195887Z           "evidence": []
2026-06-21T23:42:57.8195967Z         },
2026-06-21T23:42:57.8196039Z         "unit": {
2026-06-21T23:42:57.8196121Z           "complete": true,
2026-06-21T23:42:57.8196211Z           "evidence": [
2026-06-21T23:42:57.8196290Z             {
2026-06-21T23:42:57.8196419Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:42:57.8196509Z               "line": 1682
2026-06-21T23:42:57.8196594Z             }
2026-06-21T23:42:57.8196674Z           ]
2026-06-21T23:42:57.8196756Z         }
2026-06-21T23:42:57.8196842Z       }
2026-06-21T23:42:57.8196923Z     },
2026-06-21T23:42:57.8197008Z     {
2026-06-21T23:42:57.8197100Z       "id": "REQ-DOCS-5",
2026-06-21T23:42:57.8197386Z       "title": "Anti-drift: rustdoc/schema/exports/CLI-help generated + CI-checked",
2026-06-21T23:42:57.8197485Z       "requiredStages": [
2026-06-21T23:42:57.8197566Z         "impl",
2026-06-21T23:42:57.8197657Z         "int"
2026-06-21T23:42:57.8197729Z       ],
2026-06-21T23:42:57.8197814Z       "stages": {
2026-06-21T23:42:57.8197909Z         "doc": {
2026-06-21T23:42:57.8197995Z           "complete": false,
2026-06-21T23:42:57.8198087Z           "evidence": []
2026-06-21T23:42:57.8198172Z         },
2026-06-21T23:42:57.8198252Z         "impl": {
2026-06-21T23:42:57.8198335Z           "complete": true,
2026-06-21T23:42:57.8198420Z           "evidence": [
2026-06-21T23:42:57.8198505Z             {
2026-06-21T23:42:57.8198625Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:42:57.8198707Z               "line": 747
2026-06-21T23:42:57.8198791Z             },
2026-06-21T23:42:57.8198873Z             {
2026-06-21T23:42:57.8199139Z               "path": "crates/xtask/src/main.rs",
2026-06-21T23:42:57.8199234Z               "line": 113
2026-06-21T23:42:57.8199320Z             }
2026-06-21T23:42:57.8199402Z           ]
2026-06-21T23:42:57.8199491Z         },
2026-06-21T23:42:57.8199572Z         "int": {
2026-06-21T23:42:57.8199664Z           "complete": true,
2026-06-21T23:42:57.8199755Z           "evidence": [
2026-06-21T23:42:57.8199844Z             {
2026-06-21T23:42:57.8199955Z               "path": ".github/workflows/ci.yml",
2026-06-21T23:42:57.8200049Z               "line": 211
2026-06-21T23:42:57.8200126Z             },
2026-06-21T23:42:57.8200211Z             {
2026-06-21T23:42:57.8200336Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:42:57.8200422Z               "line": 1719
2026-06-21T23:42:57.8200512Z             }
2026-06-21T23:42:57.8200594Z           ]
2026-06-21T23:42:57.8200674Z         },
2026-06-21T23:42:57.8200765Z         "unit": {
2026-06-21T23:42:57.8200846Z           "complete": false,
2026-06-21T23:42:57.8200947Z           "evidence": []
2026-06-21T23:42:57.8201026Z         }
2026-06-21T23:42:57.8201112Z       }
2026-06-21T23:42:57.8201194Z     },
2026-06-21T23:42:57.8201281Z     {
2026-06-21T23:42:57.8201374Z       "id": "REQ-DOCS-6",
2026-06-21T23:42:57.8201700Z       "title": "spt how-to <topic>: in-binary task-oriented agent instructions (anti-drift; quickstart prompts point agents at it)",
2026-06-21T23:42:57.8201809Z       "requiredStages": [
2026-06-21T23:42:57.8201892Z         "impl",
2026-06-21T23:42:57.8201964Z         "unit",
2026-06-21T23:42:57.8202049Z         "int"
2026-06-21T23:42:57.8202129Z       ],
2026-06-21T23:42:57.8202221Z       "stages": {
2026-06-21T23:42:57.8202302Z         "doc": {
2026-06-21T23:42:57.8202401Z           "complete": true,
2026-06-21T23:42:57.8202483Z           "evidence": [
2026-06-21T23:42:57.8202564Z             {
2026-06-21T23:42:57.8202697Z               "path": "docs-site/src/quickstart/messaging.md",
2026-06-21T23:42:57.8202788Z               "line": 4
2026-06-21T23:42:57.8202879Z             }
2026-06-21T23:42:57.8202965Z           ]
2026-06-21T23:42:57.8203054Z         },
2026-06-21T23:42:57.8203132Z         "impl": {
2026-06-21T23:42:57.8203222Z           "complete": true,
2026-06-21T23:42:57.8203312Z           "evidence": [
2026-06-21T23:42:57.8203393Z             {
2026-06-21T23:42:57.8203603Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.8203694Z               "line": 5240
2026-06-21T23:42:57.8203781Z             }
2026-06-21T23:42:57.8203866Z           ]
2026-06-21T23:42:57.8203951Z         },
2026-06-21T23:42:57.8204037Z         "int": {
2026-06-21T23:42:57.8204124Z           "complete": true,
2026-06-21T23:42:57.8204213Z           "evidence": [
2026-06-21T23:42:57.8204294Z             {
2026-06-21T23:42:57.8204422Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-21T23:42:57.8204512Z               "line": 39
2026-06-21T23:42:57.8204601Z             }
2026-06-21T23:42:57.8204677Z           ]
2026-06-21T23:42:57.8204859Z         },
2026-06-21T23:42:57.8204949Z         "unit": {
2026-06-21T23:42:57.8205035Z           "complete": true,
2026-06-21T23:42:57.8205126Z           "evidence": [
2026-06-21T23:42:57.8205212Z             {
2026-06-21T23:42:57.8205320Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.8205403Z               "line": 10742
2026-06-21T23:42:57.8205493Z             }
2026-06-21T23:42:57.8205578Z           ]
2026-06-21T23:42:57.8205660Z         }
2026-06-21T23:42:57.8205742Z       }
2026-06-21T23:42:57.8205822Z     },
2026-06-21T23:42:57.8205903Z     {
2026-06-21T23:42:57.8206003Z       "id": "REQ-ELEVATE-1",
2026-06-21T23:42:57.8209239Z       "title": "Cross-platform self-elevating re-launch for privilege-gated commands: a pure decision seam `decide_elevation_path(os, elevation, interactive_tty, has_display, has_pkexec, has_term_emulator) -> ElevatePath{AlreadyElevated, InlineSudo, UacWindow, Pkexec, TerminalEmulator, PrintHint}` selecting how to re-acquire privilege, and the per-OS impure launchers it dispatches — Windows UAC console (ShellExecuteW `runas` on the abs-exe + verbatim argv; the elevated child does the work, prints 'You can close this window', and pauses for a keypress; the original prints 'Elevated terminal launched…' and exits 0; NEVER pipes the child's stdout back across the privilege boundary), Linux desktop pkexec (preferred, native polkit GUI auth) else x-terminal-emulator -e sudo (fallback list x-terminal-emulator→gnome-terminal→konsole→xterm), the existing interactive-TTY inline sudo, and the headless/no-path floor that prints the absolute-path command. Reused by every gated command (not subnet-specific). Generalizes should_auto_elevate.",
2026-06-21T23:42:57.8209385Z       "requiredStages": [
2026-06-21T23:42:57.8209471Z         "doc",
2026-06-21T23:42:57.8209549Z         "impl",
2026-06-21T23:42:57.8209629Z         "unit"
2026-06-21T23:42:57.8209709Z       ],
2026-06-21T23:42:57.8209794Z       "stages": {
2026-06-21T23:42:57.8209880Z         "doc": {
2026-06-21T23:42:57.8209977Z           "complete": true,
2026-06-21T23:42:57.8210061Z           "evidence": [
2026-06-21T23:42:57.8210142Z             {
2026-06-21T23:42:57.8210248Z               "path": "CONTEXT.md",
2026-06-21T23:42:57.8210334Z               "line": 687
2026-06-21T23:42:57.8210418Z             }
2026-06-21T23:42:57.8210510Z           ]
2026-06-21T23:42:57.8210586Z         },
2026-06-21T23:42:57.8210667Z         "impl": {
2026-06-21T23:42:57.8210757Z           "complete": true,
2026-06-21T23:42:57.8210839Z           "evidence": [
2026-06-21T23:42:57.8210929Z             {
2026-06-21T23:42:57.8211038Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.8211130Z               "line": 3572
2026-06-21T23:42:57.8211206Z             },
2026-06-21T23:42:57.8211291Z             {
2026-06-21T23:42:57.8211396Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.8211478Z               "line": 3617
2026-06-21T23:42:57.8211564Z             },
2026-06-21T23:42:57.8211654Z             {
2026-06-21T23:42:57.8211759Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.8211850Z               "line": 3679
2026-06-21T23:42:57.8211934Z             },
2026-06-21T23:42:57.8212020Z             {
2026-06-21T23:42:57.8212139Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T23:42:57.8212224Z               "line": 92
2026-06-21T23:42:57.8212409Z             },
2026-06-21T23:42:57.8212495Z             {
2026-06-21T23:42:57.8212599Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T23:42:57.8212694Z               "line": 148
2026-06-21T23:42:57.8212776Z             }
2026-06-21T23:42:57.8212862Z           ]
2026-06-21T23:42:57.8212942Z         },
2026-06-21T23:42:57.8213023Z         "int": {
2026-06-21T23:42:57.8213115Z           "complete": false,
2026-06-21T23:42:57.8213210Z           "evidence": []
2026-06-21T23:42:57.8213281Z         },
2026-06-21T23:42:57.8213358Z         "unit": {
2026-06-21T23:42:57.8213444Z           "complete": true,
2026-06-21T23:42:57.8213634Z           "evidence": [
2026-06-21T23:42:57.8213716Z             {
2026-06-21T23:42:57.8213820Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T23:42:57.8213905Z               "line": 442
2026-06-21T23:42:57.8213992Z             },
2026-06-21T23:42:57.8214064Z             {
2026-06-21T23:42:57.8214182Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T23:42:57.8214283Z               "line": 460
2026-06-21T23:42:57.8214365Z             }
2026-06-21T23:42:57.8214449Z           ]
2026-06-21T23:42:57.8214530Z         }
2026-06-21T23:42:57.8214612Z       }
2026-06-21T23:42:57.8214694Z     },
2026-06-21T23:42:57.8214778Z     {
2026-06-21T23:42:57.8214892Z       "id": "REQ-ENDPOINT-LIST-MERGE-LOCAL",
2026-06-21T23:42:57.8216654Z       "title": "`spt endpoint list` always merges this node's LOCAL (unadvertised) perches into the view; the `--local` flag is REMOVED (operator decision 2026-06-17). Rationale: `spt whoami` is a thin alias of `endpoint list` — a just-online agent running `whoami` must see its OWN perch, or it gets an omitted-self view ('chaos'). FIX: drop the `--local` flag + its `--detail` conflict test + the v0.10.0 REQ-PICKER-5 hint line (cli.rs:1678) + cmd_list_local; the bare list merges local perches into the subnet view; fix the whoami alias path accordingly. Run `cargo run -p xtask -- gen` (docs-drift, DEFAULT target). (v0.12.1)",
2026-06-21T23:42:57.8216777Z       "requiredStages": [
2026-06-21T23:42:57.8216864Z         "doc",
2026-06-21T23:42:57.8216951Z         "impl",
2026-06-21T23:42:57.8217039Z         "unit"
2026-06-21T23:42:57.8217112Z       ],
2026-06-21T23:42:57.8217203Z       "stages": {
2026-06-21T23:42:57.8217289Z         "doc": {
2026-06-21T23:42:57.8217383Z           "complete": true,
2026-06-21T23:42:57.8217467Z           "evidence": [
2026-06-21T23:42:57.8217559Z             {
2026-06-21T23:42:57.8217662Z               "path": "CONTEXT.md",
2026-06-21T23:42:57.8217743Z               "line": 711
2026-06-21T23:42:57.8217823Z             }
2026-06-21T23:42:57.8217914Z           ]
2026-06-21T23:42:57.8218005Z         },
2026-06-21T23:42:57.8218090Z         "impl": {
2026-06-21T23:42:57.8218181Z           "complete": true,
2026-06-21T23:42:57.8218268Z           "evidence": [
2026-06-21T23:42:57.8218348Z             {
2026-06-21T23:42:57.8218457Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.8218549Z               "line": 1721
2026-06-21T23:42:57.8218639Z             },
2026-06-21T23:42:57.8218720Z             {
2026-06-21T23:42:57.8218826Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.8218916Z               "line": 3125
2026-06-21T23:42:57.8219072Z             },
2026-06-21T23:42:57.8219155Z             {
2026-06-21T23:42:57.8219254Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.8219349Z               "line": 3134
2026-06-21T23:42:57.8219445Z             }
2026-06-21T23:42:57.8219531Z           ]
2026-06-21T23:42:57.8219611Z         },
2026-06-21T23:42:57.8219693Z         "int": {
2026-06-21T23:42:57.8219794Z           "complete": false,
2026-06-21T23:42:57.8219874Z           "evidence": []
2026-06-21T23:42:57.8219959Z         },
2026-06-21T23:42:57.8220041Z         "unit": {
2026-06-21T23:42:57.8220137Z           "complete": true,
2026-06-21T23:42:57.8220226Z           "evidence": [
2026-06-21T23:42:57.8220302Z             {
2026-06-21T23:42:57.8220512Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.8220603Z               "line": 7950
2026-06-21T23:42:57.8220683Z             },
2026-06-21T23:42:57.8220765Z             {
2026-06-21T23:42:57.8220875Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.8220959Z               "line": 7991
2026-06-21T23:42:57.8221041Z             }
2026-06-21T23:42:57.8221132Z           ]
2026-06-21T23:42:57.8221213Z         }
2026-06-21T23:42:57.8221298Z       }
2026-06-21T23:42:57.8221380Z     },
2026-06-21T23:42:57.8221466Z     {
2026-06-21T23:42:57.8221575Z       "id": "REQ-ENDPOINT-PURGE",
2026-06-21T23:42:57.8226332Z       "title": "`spt endpoint purge <id>` fully removes an endpoint AND every record keyed on it — the formal teardown devs/CI need for clean test setup/reset. NOT consent-gated (a local dev/test op — no peer consent). OFFLINE-ONLY: refuses while the endpoint is online / daemon-hosted (deleting records out from under a live host risks the daemon re-creating or re-hosting mid-purge); `--force` STOPS it first (endpoint stop → wait for the daemon reconcile to un-host + reap the Psyche) THEN purges. Confirms interactively unless `--yes` (the CI path). Refuses purging the CALLER's OWN running id. All LOCAL — purge reaches only THIS node's records; a remote endpoint's records can't be touched, and its subnet-registry rows decay via the epoch-lease eviction (REQ-HAZARD-REGISTRY-DECAY). Removes: (1) the perch dir TREE recursively — owlery/<id>/ incl every nested {id}-psyche / {id}-w* / shells child (info.json, ready marker, sessions.log ledger, spool.db, inbox, .idle/.more-done sentinels, auth token); (2) the registry address (registry::unregister_address); (3) the context store — ContextStore::remove_endpoint(id): the a-<id> branch+worktree + the <id>/ rows from every p-<project> branch (the same fn `fork --delete-source` already uses); (4) node-local trust rows keyed on the id — access.json + visibility.json. Reuse-heavy: it is `fork --delete-source` generalized (recursive perch remove + unregister + remove_endpoint) + the trust-record cleanup; `endpoint rename` already enumerates the same record set + uses the same offline-only gate. (v0.12.0)",
2026-06-21T23:42:57.8226580Z       "requiredStages": [
2026-06-21T23:42:57.8226656Z         "doc",
2026-06-21T23:42:57.8226741Z         "impl",
2026-06-21T23:42:57.8226823Z         "unit",
2026-06-21T23:42:57.8226900Z         "int"
2026-06-21T23:42:57.8226976Z       ],
2026-06-21T23:42:57.8227056Z       "stages": {
2026-06-21T23:42:57.8227143Z         "doc": {
2026-06-21T23:42:57.8227233Z           "complete": true,
2026-06-21T23:42:57.8227323Z           "evidence": [
2026-06-21T23:42:57.8227419Z             {
2026-06-21T23:42:57.8227506Z               "path": "CONTEXT.md",
2026-06-21T23:42:57.8227595Z               "line": 163
2026-06-21T23:42:57.8227676Z             }
2026-06-21T23:42:57.8227763Z           ]
2026-06-21T23:42:57.8227845Z         },
2026-06-21T23:42:57.8227933Z         "impl": {
2026-06-21T23:42:57.8228037Z           "complete": true,
2026-06-21T23:42:57.8228114Z           "evidence": [
2026-06-21T23:42:57.8228194Z             {
2026-06-21T23:42:57.8228321Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T23:42:57.8228407Z               "line": 105
2026-06-21T23:42:57.8228494Z             },
2026-06-21T23:42:57.8228574Z             {
2026-06-21T23:42:57.8228683Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.8228771Z               "line": 7219
2026-06-21T23:42:57.8228851Z             }
2026-06-21T23:42:57.8228931Z           ]
2026-06-21T23:42:57.8229128Z         },
2026-06-21T23:42:57.8229209Z         "int": {
2026-06-21T23:42:57.8229313Z           "complete": true,
2026-06-21T23:42:57.8229419Z           "evidence": [
2026-06-21T23:42:57.8229494Z             {
2026-06-21T23:42:57.8229594Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.8229681Z               "line": 7384
2026-06-21T23:42:57.8229771Z             }
2026-06-21T23:42:57.8229852Z           ]
2026-06-21T23:42:57.8230068Z         },
2026-06-21T23:42:57.8230152Z         "unit": {
2026-06-21T23:42:57.8230238Z           "complete": true,
2026-06-21T23:42:57.8230320Z           "evidence": [
2026-06-21T23:42:57.8230401Z             {
2026-06-21T23:42:57.8230505Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.8230591Z               "line": 7355
2026-06-21T23:42:57.8230679Z             }
2026-06-21T23:42:57.8230768Z           ]
2026-06-21T23:42:57.8230853Z         }
2026-06-21T23:42:57.8230933Z       }
2026-06-21T23:42:57.8231010Z     },
2026-06-21T23:42:57.8231097Z     {
2026-06-21T23:42:57.8231205Z       "id": "REQ-ENDPOINT-STOP-OFFLINE",
2026-06-21T23:42:57.8232604Z       "title": "H3: `spt endpoint stop <id>` marks the endpoint OFFLINE (alive=false), not merely de-readied. cmd_stop (cli.rs:2994-3010) removes the ready marker + unregisters the address but does NOT set status offline, so a stopped daemon-hosted endpoint still reports alive=true (status=online latch). FIX: add set_status(perch, STATUS_OFFLINE) to cmd_stop — folds with B2 (same setter). Unit: stop → is_perch_alive=false / alive=false. (v0.12.0)",
2026-06-21T23:42:57.8232712Z       "requiredStages": [
2026-06-21T23:42:57.8232788Z         "impl",
2026-06-21T23:42:57.8232879Z         "unit"
2026-06-21T23:42:57.8232961Z       ],
2026-06-21T23:42:57.8233046Z       "stages": {
2026-06-21T23:42:57.8233126Z         "doc": {
2026-06-21T23:42:57.8233226Z           "complete": false,
2026-06-21T23:42:57.8233321Z           "evidence": []
2026-06-21T23:42:57.8233400Z         },
2026-06-21T23:42:57.8233490Z         "impl": {
2026-06-21T23:42:57.8233572Z           "complete": true,
2026-06-21T23:42:57.8233673Z           "evidence": [
2026-06-21T23:42:57.8233762Z             {
2026-06-21T23:42:57.8233863Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.8233949Z               "line": 3165
2026-06-21T23:42:57.8234030Z             }
2026-06-21T23:42:57.8234120Z           ]
2026-06-21T23:42:57.8234188Z         },
2026-06-21T23:42:57.8234278Z         "int": {
2026-06-21T23:42:57.8234373Z           "complete": false,
2026-06-21T23:42:57.8234449Z           "evidence": []
2026-06-21T23:42:57.8234531Z         },
2026-06-21T23:42:57.8234616Z         "unit": {
2026-06-21T23:42:57.8234716Z           "complete": true,
2026-06-21T23:42:57.8234788Z           "evidence": [
2026-06-21T23:42:57.8234879Z             {
2026-06-21T23:42:57.8234984Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.8235069Z               "line": 7331
2026-06-21T23:42:57.8235156Z             }
2026-06-21T23:42:57.8235241Z           ]
2026-06-21T23:42:57.8235322Z         }
2026-06-21T23:42:57.8235408Z       }
2026-06-21T23:42:57.8235504Z     },
2026-06-21T23:42:57.8235593Z     {
2026-06-21T23:42:57.8235679Z       "id": "REQ-EP-1",
2026-06-21T23:42:57.8235809Z       "title": "Day-one endpoint types; open type system",
2026-06-21T23:42:57.8235904Z       "requiredStages": [
2026-06-21T23:42:57.8235988Z         "impl",
2026-06-21T23:42:57.8236084Z         "unit"
2026-06-21T23:42:57.8236174Z       ],
2026-06-21T23:42:57.8236263Z       "stages": {
2026-06-21T23:42:57.8236348Z         "doc": {
2026-06-21T23:42:57.8236444Z           "complete": false,
2026-06-21T23:42:57.8236520Z           "evidence": []
2026-06-21T23:42:57.8236606Z         },
2026-06-21T23:42:57.8236682Z         "impl": {
2026-06-21T23:42:57.8236774Z           "complete": true,
2026-06-21T23:42:57.8236874Z           "evidence": [
2026-06-21T23:42:57.8236948Z             {
2026-06-21T23:42:57.8237079Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T23:42:57.8237159Z               "line": 77
2026-06-21T23:42:57.8237245Z             },
2026-06-21T23:42:57.8237330Z             {
2026-06-21T23:42:57.8237455Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T23:42:57.8237546Z               "line": 94
2026-06-21T23:42:57.8237626Z             }
2026-06-21T23:42:57.8237708Z           ]
2026-06-21T23:42:57.8237794Z         },
2026-06-21T23:42:57.8237884Z         "int": {
2026-06-21T23:42:57.8238056Z           "complete": false,
2026-06-21T23:42:57.8238155Z           "evidence": []
2026-06-21T23:42:57.8238236Z         },
2026-06-21T23:42:57.8238324Z         "unit": {
2026-06-21T23:42:57.8238414Z           "complete": true,
2026-06-21T23:42:57.8238503Z           "evidence": [
2026-06-21T23:42:57.8238588Z             {
2026-06-21T23:42:57.8238703Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T23:42:57.8238796Z               "line": 161
2026-06-21T23:42:57.8238881Z             },
2026-06-21T23:42:57.8239030Z             {
2026-06-21T23:42:57.8239148Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T23:42:57.8239336Z               "line": 178
2026-06-21T23:42:57.8239445Z             }
2026-06-21T23:42:57.8239525Z           ]
2026-06-21T23:42:57.8239607Z         }
2026-06-21T23:42:57.8239693Z       }
2026-06-21T23:42:57.8239774Z     },
2026-06-21T23:42:57.8239854Z     {
2026-06-21T23:42:57.8239936Z       "id": "REQ-EP-2",
2026-06-21T23:42:57.8240117Z       "title": "Agent endpoints vs Shells distinction in the type model",
2026-06-21T23:42:57.8240202Z       "requiredStages": [
2026-06-21T23:42:57.8240280Z         "impl",
2026-06-21T23:42:57.8240369Z         "unit"
2026-06-21T23:42:57.8240455Z       ],
2026-06-21T23:42:57.8240541Z       "stages": {
2026-06-21T23:42:57.8240623Z         "doc": {
2026-06-21T23:42:57.8240722Z           "complete": false,
2026-06-21T23:42:57.8240803Z           "evidence": []
2026-06-21T23:42:57.8240890Z         },
2026-06-21T23:42:57.8240971Z         "impl": {
2026-06-21T23:42:57.8241065Z           "complete": true,
2026-06-21T23:42:57.8244399Z           "evidence": [
2026-06-21T23:42:57.8244533Z             {
2026-06-21T23:42:57.8244675Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T23:42:57.8244771Z               "line": 114
2026-06-21T23:42:57.8244862Z             },
2026-06-21T23:42:57.8244980Z             {
2026-06-21T23:42:57.8245100Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T23:42:57.8245205Z               "line": 131
2026-06-21T23:42:57.8245281Z             },
2026-06-21T23:42:57.8245367Z             {
2026-06-21T23:42:57.8245477Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T23:42:57.8245567Z               "line": 138
2026-06-21T23:42:57.8245658Z             }
2026-06-21T23:42:57.8245730Z           ]
2026-06-21T23:42:57.8245820Z         },
2026-06-21T23:42:57.8245897Z         "int": {
2026-06-21T23:42:57.8245997Z           "complete": false,
2026-06-21T23:42:57.8246083Z           "evidence": []
2026-06-21T23:42:57.8246168Z         },
2026-06-21T23:42:57.8246258Z         "unit": {
2026-06-21T23:42:57.8246351Z           "complete": true,
2026-06-21T23:42:57.8246445Z           "evidence": [
2026-06-21T23:42:57.8246529Z             {
2026-06-21T23:42:57.8246648Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T23:42:57.8246729Z               "line": 190
2026-06-21T23:42:57.8246809Z             },
2026-06-21T23:42:57.8246898Z             {
2026-06-21T23:42:57.8247013Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T23:42:57.8247105Z               "line": 208
2026-06-21T23:42:57.8247194Z             },
2026-06-21T23:42:57.8247270Z             {
2026-06-21T23:42:57.8247391Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-21T23:42:57.8247471Z               "line": 221
2026-06-21T23:42:57.8247556Z             }
2026-06-21T23:42:57.8247639Z           ]
2026-06-21T23:42:57.8247715Z         }
2026-06-21T23:42:57.8247805Z       }
2026-06-21T23:42:57.8247881Z     },
2026-06-21T23:42:57.8247963Z     {
2026-06-21T23:42:57.8248058Z       "id": "REQ-EP-3",
2026-06-21T23:42:57.8248259Z       "title": "Messaging payloads carry typed operation commands + file blobs",
2026-06-21T23:42:57.8248345Z       "requiredStages": [
2026-06-21T23:42:57.8248439Z         "impl",
2026-06-21T23:42:57.8248511Z         "unit"
2026-06-21T23:42:57.8248588Z       ],
2026-06-21T23:42:57.8248674Z       "stages": {
2026-06-21T23:42:57.8248898Z         "doc": {
2026-06-21T23:42:57.8249091Z           "complete": false,
2026-06-21T23:42:57.8249176Z           "evidence": []
2026-06-21T23:42:57.8249258Z         },
2026-06-21T23:42:57.8249348Z         "impl": {
2026-06-21T23:42:57.8249437Z           "complete": true,
2026-06-21T23:42:57.8249518Z           "evidence": [
2026-06-21T23:42:57.8249605Z             {
2026-06-21T23:42:57.8249732Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T23:42:57.8249813Z               "line": 31
2026-06-21T23:42:57.8249905Z             },
2026-06-21T23:42:57.8249981Z             {
2026-06-21T23:42:57.8250095Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T23:42:57.8250281Z               "line": 49
2026-06-21T23:42:57.8250367Z             }
2026-06-21T23:42:57.8250452Z           ]
2026-06-21T23:42:57.8250535Z         },
2026-06-21T23:42:57.8250619Z         "int": {
2026-06-21T23:42:57.8250705Z           "complete": false,
2026-06-21T23:42:57.8250796Z           "evidence": []
2026-06-21T23:42:57.8250878Z         },
2026-06-21T23:42:57.8250958Z         "unit": {
2026-06-21T23:42:57.8251044Z           "complete": true,
2026-06-21T23:42:57.8251126Z           "evidence": [
2026-06-21T23:42:57.8251217Z             {
2026-06-21T23:42:57.8251330Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T23:42:57.8251421Z               "line": 156
2026-06-21T23:42:57.8251498Z             },
2026-06-21T23:42:57.8251587Z             {
2026-06-21T23:42:57.8251702Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T23:42:57.8251784Z               "line": 164
2026-06-21T23:42:57.8251870Z             },
2026-06-21T23:42:57.8251954Z             {
2026-06-21T23:42:57.8252068Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T23:42:57.8252150Z               "line": 177
2026-06-21T23:42:57.8252240Z             },
2026-06-21T23:42:57.8252325Z             {
2026-06-21T23:42:57.8252435Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T23:42:57.8252531Z               "line": 200
2026-06-21T23:42:57.8252611Z             },
2026-06-21T23:42:57.8252687Z             {
2026-06-21T23:42:57.8252794Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T23:42:57.8252884Z               "line": 216
2026-06-21T23:42:57.8252964Z             },
2026-06-21T23:42:57.8253051Z             {
2026-06-21T23:42:57.8253160Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-21T23:42:57.8253246Z               "line": 233
2026-06-21T23:42:57.8253331Z             }
2026-06-21T23:42:57.8253414Z           ]
2026-06-21T23:42:57.8253498Z         }
2026-06-21T23:42:57.8253575Z       }
2026-06-21T23:42:57.8253661Z     },
2026-06-21T23:42:57.8253743Z     {
2026-06-21T23:42:57.8253837Z       "id": "REQ-EP-4",
2026-06-21T23:42:57.8253985Z       "title": "PresenceChannel broker endpoint (seam day-one)",
2026-06-21T23:42:57.8254081Z       "requiredStages": [
2026-06-21T23:42:57.8254161Z         "impl",
2026-06-21T23:42:57.8254251Z         "unit"
2026-06-21T23:42:57.8254336Z       ],
2026-06-21T23:42:57.8254427Z       "stages": {
2026-06-21T23:42:57.8254511Z         "doc": {
2026-06-21T23:42:57.8254596Z           "complete": false,
2026-06-21T23:42:57.8254673Z           "evidence": []
2026-06-21T23:42:57.8254755Z         },
2026-06-21T23:42:57.8254840Z         "impl": {
2026-06-21T23:42:57.8254930Z           "complete": true,
2026-06-21T23:42:57.8255012Z           "evidence": [
2026-06-21T23:42:57.8255098Z             {
2026-06-21T23:42:57.8255216Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T23:42:57.8255308Z               "line": 778
2026-06-21T23:42:57.8255393Z             },
2026-06-21T23:42:57.8255469Z             {
2026-06-21T23:42:57.8255584Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T23:42:57.8255680Z               "line": 1221
2026-06-21T23:42:57.8255756Z             },
2026-06-21T23:42:57.8255836Z             {
2026-06-21T23:42:57.8255952Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:42:57.8256137Z               "line": 2387
2026-06-21T23:42:57.8256213Z             },
2026-06-21T23:42:57.8256300Z             {
2026-06-21T23:42:57.8256413Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T23:42:57.8256499Z               "line": 125
2026-06-21T23:42:57.8256586Z             },
2026-06-21T23:42:57.8256671Z             {
2026-06-21T23:42:57.8256776Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T23:42:57.8256867Z               "line": 715
2026-06-21T23:42:57.8256944Z             },
2026-06-21T23:42:57.8257028Z             {
2026-06-21T23:42:57.8257132Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T23:42:57.8257317Z               "line": 864
2026-06-21T23:42:57.8257393Z             },
2026-06-21T23:42:57.8257473Z             {
2026-06-21T23:42:57.8257593Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T23:42:57.8257670Z               "line": 321
2026-06-21T23:42:57.8257750Z             },
2026-06-21T23:42:57.8257831Z             {
2026-06-21T23:42:57.8257946Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T23:42:57.8258031Z               "line": 508
2026-06-21T23:42:57.8258116Z             },
2026-06-21T23:42:57.8258199Z             {
2026-06-21T23:42:57.8258313Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T23:42:57.8258412Z               "line": 1334
2026-06-21T23:42:57.8258494Z             }
2026-06-21T23:42:57.8258576Z           ]
2026-06-21T23:42:57.8258661Z         },
2026-06-21T23:42:57.8258746Z         "int": {
2026-06-21T23:42:57.8258847Z           "complete": false,
2026-06-21T23:42:57.8258928Z           "evidence": []
2026-06-21T23:42:57.8259109Z         },
2026-06-21T23:42:57.8259191Z         "unit": {
2026-06-21T23:42:57.8259290Z           "complete": true,
2026-06-21T23:42:57.8259390Z           "evidence": [
2026-06-21T23:42:57.8259477Z             {
2026-06-21T23:42:57.8259586Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T23:42:57.8259680Z               "line": 955
2026-06-21T23:42:57.8259756Z             },
2026-06-21T23:42:57.8259842Z             {
2026-06-21T23:42:57.8259968Z               "path": "crates/spt-daemon/tests/presence.rs",
2026-06-21T23:42:57.8260059Z               "line": 76
2026-06-21T23:42:57.8260140Z             },
2026-06-21T23:42:57.8260223Z             {
2026-06-21T23:42:57.8260340Z               "path": "crates/spt-daemon/tests/presence.rs",
2026-06-21T23:42:57.8260431Z               "line": 147
2026-06-21T23:42:57.8260517Z             }
2026-06-21T23:42:57.8260598Z           ]
2026-06-21T23:42:57.8260684Z         }
2026-06-21T23:42:57.8260770Z       }
2026-06-21T23:42:57.8260855Z     },
2026-06-21T23:42:57.8260927Z     {
2026-06-21T23:42:57.8261013Z       "id": "REQ-EP-5",
2026-06-21T23:42:57.8261647Z       "title": "Concrete shell instantiation model: spawn-mints-instance (vs relink/online), registered-on-node permission + broadcast-is-discovery, per-shell require_approval gate, max_instances_per_owner + over_cap, instance aliasing, discovery scope",
2026-06-21T23:42:57.8261743Z       "requiredStages": [
2026-06-21T23:42:57.8261828Z         "impl",
2026-06-21T23:42:57.8261904Z         "unit",
2026-06-21T23:42:57.8261986Z         "int"
2026-06-21T23:42:57.8262063Z       ],
2026-06-21T23:42:57.8262152Z       "stages": {
2026-06-21T23:42:57.8262238Z         "doc": {
2026-06-21T23:42:57.8262321Z           "complete": false,
2026-06-21T23:42:57.8262407Z           "evidence": []
2026-06-21T23:42:57.8262486Z         },
2026-06-21T23:42:57.8262571Z         "impl": {
2026-06-21T23:42:57.8262657Z           "complete": true,
2026-06-21T23:42:57.8262738Z           "evidence": [
2026-06-21T23:42:57.8262828Z             {
2026-06-21T23:42:57.8262962Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:42:57.8263048Z               "line": 367
2026-06-21T23:42:57.8263134Z             },
2026-06-21T23:42:57.8263219Z             {
2026-06-21T23:42:57.8263340Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T23:42:57.8263534Z               "line": 18
2026-06-21T23:42:57.8263620Z             },
2026-06-21T23:42:57.8263702Z             {
2026-06-21T23:42:57.8263820Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T23:42:57.8263896Z               "line": 63
2026-06-21T23:42:57.8263979Z             },
2026-06-21T23:42:57.8264054Z             {
2026-06-21T23:42:57.8264173Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T23:42:57.8264260Z               "line": 92
2026-06-21T23:42:57.8264336Z             },
2026-06-21T23:42:57.8264425Z             {
2026-06-21T23:42:57.8264535Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T23:42:57.8264721Z               "line": 167
2026-06-21T23:42:57.8264797Z             },
2026-06-21T23:42:57.8264883Z             {
2026-06-21T23:42:57.8265005Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T23:42:57.8265090Z               "line": 179
2026-06-21T23:42:57.8265180Z             },
2026-06-21T23:42:57.8265253Z             {
2026-06-21T23:42:57.8265376Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:42:57.8265466Z               "line": 114
2026-06-21T23:42:57.8265548Z             },
2026-06-21T23:42:57.8265630Z             {
2026-06-21T23:42:57.8265743Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T23:42:57.8265839Z               "line": 22
2026-06-21T23:42:57.8265915Z             },
2026-06-21T23:42:57.8266001Z             {
2026-06-21T23:42:57.8266115Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T23:42:57.8266207Z               "line": 145
2026-06-21T23:42:57.8266297Z             },
2026-06-21T23:42:57.8266377Z             {
2026-06-21T23:42:57.8266497Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T23:42:57.8266587Z               "line": 174
2026-06-21T23:42:57.8266678Z             },
2026-06-21T23:42:57.8266754Z             {
2026-06-21T23:42:57.8266874Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T23:42:57.8266968Z               "line": 196
2026-06-21T23:42:57.8267045Z             },
2026-06-21T23:42:57.8267132Z             {
2026-06-21T23:42:57.8267245Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T23:42:57.8267336Z               "line": 221
2026-06-21T23:42:57.8267418Z             },
2026-06-21T23:42:57.8267500Z             {
2026-06-21T23:42:57.8267617Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T23:42:57.8267697Z               "line": 247
2026-06-21T23:42:57.8267773Z             },
2026-06-21T23:42:57.8267859Z             {
2026-06-21T23:42:57.8267981Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T23:42:57.8268067Z               "line": 270
2026-06-21T23:42:57.8268182Z             },
2026-06-21T23:42:57.8268291Z             {
2026-06-21T23:42:57.8268405Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:42:57.8268525Z               "line": 104
2026-06-21T23:42:57.8268610Z             },
2026-06-21T23:42:57.8268696Z             {
2026-06-21T23:42:57.8268821Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.8268911Z               "line": 6068
2026-06-21T23:42:57.8269049Z             },
2026-06-21T23:42:57.8269136Z             {
2026-06-21T23:42:57.8269231Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.8269321Z               "line": 6202
2026-06-21T23:42:57.8269427Z             },
2026-06-21T23:42:57.8269507Z             {
2026-06-21T23:42:57.8269607Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.8269723Z               "line": 6368
2026-06-21T23:42:57.8269812Z             },
2026-06-21T23:42:57.8269888Z             {
2026-06-21T23:42:57.8269980Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.8270061Z               "line": 6896
2026-06-21T23:42:57.8270141Z             }
2026-06-21T23:42:57.8270221Z           ]
2026-06-21T23:42:57.8270306Z         },
2026-06-21T23:42:57.8270505Z         "int": {
2026-06-21T23:42:57.8270605Z           "complete": true,
2026-06-21T23:42:57.8270696Z           "evidence": [
2026-06-21T23:42:57.8270778Z             {
2026-06-21T23:42:57.8270900Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-21T23:42:57.8270982Z               "line": 16
2026-06-21T23:42:57.8271073Z             },
2026-06-21T23:42:57.8271154Z             {
2026-06-21T23:42:57.8271287Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-21T23:42:57.8271373Z               "line": 15
2026-06-21T23:42:57.8271454Z             }
2026-06-21T23:42:57.8271544Z           ]
2026-06-21T23:42:57.8271626Z         },
2026-06-21T23:42:57.8271821Z         "unit": {
2026-06-21T23:42:57.8271907Z           "complete": true,
2026-06-21T23:42:57.8271998Z           "evidence": [
2026-06-21T23:42:57.8272073Z             {
2026-06-21T23:42:57.8272193Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T23:42:57.8272280Z               "line": 246
2026-06-21T23:42:57.8272379Z             },
2026-06-21T23:42:57.8272469Z             {
2026-06-21T23:42:57.8272599Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T23:42:57.8272694Z               "line": 306
2026-06-21T23:42:57.8272775Z             },
2026-06-21T23:42:57.8272866Z             {
2026-06-21T23:42:57.8272995Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-21T23:42:57.8273088Z               "line": 363
2026-06-21T23:42:57.8273188Z             },
2026-06-21T23:42:57.8273270Z             {
2026-06-21T23:42:57.8273398Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T23:42:57.8273493Z               "line": 286
2026-06-21T23:42:57.8273580Z             },
2026-06-21T23:42:57.8273656Z             {
2026-06-21T23:42:57.8273770Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T23:42:57.8273857Z               "line": 338
2026-06-21T23:42:57.8273938Z             },
2026-06-21T23:42:57.8274023Z             {
2026-06-21T23:42:57.8274156Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:42:57.8274243Z               "line": 783
2026-06-21T23:42:57.8274323Z             },
2026-06-21T23:42:57.8274404Z             {
2026-06-21T23:42:57.8274520Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.8274614Z               "line": 8751
2026-06-21T23:42:57.8274700Z             },
2026-06-21T23:42:57.8274786Z             {
2026-06-21T23:42:57.8274887Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.8274981Z               "line": 8904
2026-06-21T23:42:57.8275062Z             },
2026-06-21T23:42:57.8275149Z             {
2026-06-21T23:42:57.8275239Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.8275371Z               "line": 9493
2026-06-21T23:42:57.8275471Z             },
2026-06-21T23:42:57.8275557Z             {
2026-06-21T23:42:57.8275660Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.8275750Z               "line": 9609
2026-06-21T23:42:57.8275837Z             }
2026-06-21T23:42:57.8275927Z           ]
2026-06-21T23:42:57.8276017Z         }
2026-06-21T23:42:57.8276103Z       }
2026-06-21T23:42:57.8276190Z     },
2026-06-21T23:42:57.8276279Z     {
2026-06-21T23:42:57.8276369Z       "id": "REQ-EP-6",
2026-06-21T23:42:57.8277915Z       "title": "Gateway type acceptance: a Gateway-typed perch binds (api bind --type, open type system — un-hardcode the live_agent default), advertises/addressable like any endpoint, owns shells (owner validation not agent-family-gated), subscribes to digests, and is the user-msg identity gate's user-backed origin (REQ-MSG-5); in-tree mock-gateway fixture (R-DOCS-2 pattern, no downstream adapter code). Cross-node WAN Gateway-origin (registry endpoint_type trust) tracked by REQ-MSG-6",
2026-06-21T23:42:57.8278031Z       "requiredStages": [
2026-06-21T23:42:57.8278116Z         "doc",
2026-06-21T23:42:57.8278205Z         "impl",
2026-06-21T23:42:57.8278285Z         "unit"
2026-06-21T23:42:57.8278372Z       ],
2026-06-21T23:42:57.8278541Z       "stages": {
2026-06-21T23:42:57.8278637Z         "doc": {
2026-06-21T23:42:57.8278728Z           "complete": true,
2026-06-21T23:42:57.8278818Z           "evidence": [
2026-06-21T23:42:57.8278908Z             {
2026-06-21T23:42:57.8279071Z               "path": "CONTEXT.md",
2026-06-21T23:42:57.8279161Z               "line": 227
2026-06-21T23:42:57.8279246Z             }
2026-06-21T23:42:57.8279348Z           ]
2026-06-21T23:42:57.8279424Z         },
2026-06-21T23:42:57.8279509Z         "impl": {
2026-06-21T23:42:57.8279619Z           "complete": true,
2026-06-21T23:42:57.8279705Z           "evidence": [
2026-06-21T23:42:57.8279795Z             {
2026-06-21T23:42:57.8280015Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:42:57.8280110Z               "line": 212
2026-06-21T23:42:57.8280195Z             }
2026-06-21T23:42:57.8280273Z           ]
2026-06-21T23:42:57.8280358Z         },
2026-06-21T23:42:57.8280438Z         "int": {
2026-06-21T23:42:57.8280530Z           "complete": true,
2026-06-21T23:42:57.8280612Z           "evidence": [
2026-06-21T23:42:57.8280697Z             {
2026-06-21T23:42:57.8280810Z               "path": "crates/spt/tests/gateway_e2e.rs",
2026-06-21T23:42:57.8280900Z               "line": 18
2026-06-21T23:42:57.8280976Z             }
2026-06-21T23:42:57.8281060Z           ]
2026-06-21T23:42:57.8281141Z         },
2026-06-21T23:42:57.8281222Z         "unit": {
2026-06-21T23:42:57.8281328Z           "complete": true,
2026-06-21T23:42:57.8281418Z           "evidence": [
2026-06-21T23:42:57.8281489Z             {
2026-06-21T23:42:57.8281619Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T23:42:57.8281704Z               "line": 556
2026-06-21T23:42:57.8281794Z             },
2026-06-21T23:42:57.8281877Z             {
2026-06-21T23:42:57.8281981Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:42:57.8282076Z               "line": 904
2026-06-21T23:42:57.8282152Z             }
2026-06-21T23:42:57.8282239Z           ]
2026-06-21T23:42:57.8282324Z         }
2026-06-21T23:42:57.8282409Z       }
2026-06-21T23:42:57.8282491Z     },
2026-06-21T23:42:57.8282577Z     {
2026-06-21T23:42:57.8282677Z       "id": "REQ-EP-7",
2026-06-21T23:42:57.8284315Z       "title": "Durable live-role.md: a per-agent broad-purpose statement in tracked/agents/<id>/ beside live-context.md (replicates with the mind on the same a-<id> branch); renders FIRST at start-transition context injection (role -> live-context -> project-context); SOLE writer `spt endpoint role --overwrite <file>` — mechanical no-automated-writer guarantee (echo-commune ingest / signoff / Psyche reconcile structurally exclude it). The user-backed-origin hard gate on the writer is a deferred later tightening (rides the user-msg identity plumbing)",
2026-06-21T23:42:57.8284422Z       "requiredStages": [
2026-06-21T23:42:57.8284507Z         "doc",
2026-06-21T23:42:57.8284588Z         "impl",
2026-06-21T23:42:57.8284673Z         "unit"
2026-06-21T23:42:57.8284760Z       ],
2026-06-21T23:42:57.8284850Z       "stages": {
2026-06-21T23:42:57.8284941Z         "doc": {
2026-06-21T23:42:57.8285036Z           "complete": true,
2026-06-21T23:42:57.8285118Z           "evidence": [
2026-06-21T23:42:57.8285198Z             {
2026-06-21T23:42:57.8285298Z               "path": "CONTEXT.md",
2026-06-21T23:42:57.8285381Z               "line": 490
2026-06-21T23:42:57.8285466Z             }
2026-06-21T23:42:57.8285550Z           ]
2026-06-21T23:42:57.8285637Z         },
2026-06-21T23:42:57.8285729Z         "impl": {
2026-06-21T23:42:57.8285813Z           "complete": true,
2026-06-21T23:42:57.8285898Z           "evidence": [
2026-06-21T23:42:57.8285983Z             {
2026-06-21T23:42:57.8286108Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T23:42:57.8286196Z               "line": 505
2026-06-21T23:42:57.8286277Z             },
2026-06-21T23:42:57.8286363Z             {
2026-06-21T23:42:57.8286469Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T23:42:57.8286558Z               "line": 87
2026-06-21T23:42:57.8286745Z             },
2026-06-21T23:42:57.8286830Z             {
2026-06-21T23:42:57.8286954Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T23:42:57.8287036Z               "line": 81
2026-06-21T23:42:57.8287122Z             },
2026-06-21T23:42:57.8287202Z             {
2026-06-21T23:42:57.8287332Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T23:42:57.8287417Z               "line": 166
2026-06-21T23:42:57.8287502Z             },
2026-06-21T23:42:57.8287583Z             {
2026-06-21T23:42:57.8287690Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.8287775Z               "line": 1645
2026-06-21T23:42:57.8287952Z             }
2026-06-21T23:42:57.8288037Z           ]
2026-06-21T23:42:57.8288118Z         },
2026-06-21T23:42:57.8288199Z         "int": {
2026-06-21T23:42:57.8288286Z           "complete": false,
2026-06-21T23:42:57.8288370Z           "evidence": []
2026-06-21T23:42:57.8288451Z         },
2026-06-21T23:42:57.8288538Z         "unit": {
2026-06-21T23:42:57.8288625Z           "complete": true,
2026-06-21T23:42:57.8288713Z           "evidence": [
2026-06-21T23:42:57.8288803Z             {
2026-06-21T23:42:57.8288913Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T23:42:57.8289068Z               "line": 623
2026-06-21T23:42:57.8289153Z             },
2026-06-21T23:42:57.8289245Z             {
2026-06-21T23:42:57.8289364Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T23:42:57.8289459Z               "line": 212
2026-06-21T23:42:57.8289560Z             },
2026-06-21T23:42:57.8289640Z             {
2026-06-21T23:42:57.8289754Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T23:42:57.8289846Z               "line": 307
2026-06-21T23:42:57.8289917Z             },
2026-06-21T23:42:57.8290003Z             {
2026-06-21T23:42:57.8290102Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.8290199Z               "line": 7724
2026-06-21T23:42:57.8290284Z             },
2026-06-21T23:42:57.8290369Z             {
2026-06-21T23:42:57.8290480Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.8290566Z               "line": 7751
2026-06-21T23:42:57.8290655Z             }
2026-06-21T23:42:57.8290732Z           ]
2026-06-21T23:42:57.8290819Z         }
2026-06-21T23:42:57.8290900Z       }
2026-06-21T23:42:57.8290984Z     },
2026-06-21T23:42:57.8291080Z     {
2026-06-21T23:42:57.8291163Z       "id": "REQ-FRONT-1",
2026-06-21T23:42:57.8291337Z       "title": "Day-one launcher/manager frontend (list/launch/attach/init)",
2026-06-21T23:42:57.8291427Z       "requiredStages": [],
2026-06-21T23:42:57.8291522Z       "stages": {
2026-06-21T23:42:57.8291606Z         "doc": {
2026-06-21T23:42:57.8291701Z           "complete": false,
2026-06-21T23:42:57.8291792Z           "evidence": []
2026-06-21T23:42:57.8291874Z         },
2026-06-21T23:42:57.8291964Z         "impl": {
2026-06-21T23:42:57.8292044Z           "complete": false,
2026-06-21T23:42:57.8292136Z           "evidence": []
2026-06-21T23:42:57.8292222Z         },
2026-06-21T23:42:57.8292312Z         "int": {
2026-06-21T23:42:57.8292402Z           "complete": false,
2026-06-21T23:42:57.8292488Z           "evidence": []
2026-06-21T23:42:57.8292579Z         },
2026-06-21T23:42:57.8292659Z         "unit": {
2026-06-21T23:42:57.8292752Z           "complete": false,
2026-06-21T23:42:57.8292837Z           "evidence": []
2026-06-21T23:42:57.8292922Z         }
2026-06-21T23:42:57.8293003Z       }
2026-06-21T23:42:57.8293076Z     },
2026-06-21T23:42:57.8293161Z     {
2026-06-21T23:42:57.8293261Z       "id": "REQ-HAZARD-ATTACH-WEDGE",
2026-06-21T23:42:57.8298579Z       "title": "A legitimately dead PTY child (real crash/kill) + an undrained operator pump must NOT wedge the broker for all other clients. ROOT (v0.12.0 real-harness defect): loopback attach output is a blocking write_all into a bounded 64KB tokio duplex (nethost.rs:1040,1090); when the operator's rc pump stops draining (tab closed) the buffer fills and write_all blocks forever (the 'loopback never hangs' assumption at nethost.rs:1103 is false), parking a worker in the 2-worker net runtime (nethost.rs:640); a couple of these saturate BOTH workers → every new attach / `endpoint run` stalls right after 'PUMP_IPC_READER: spawned' → 30s FIRST_EVENT_GRACE → 'no output / dead or wedged'; `daemon stop` cannot join the stuck workers. DISTINCT from the removed B1 path-(c) mutex deadlock. DISPOSITION = PROVE-DON'T-CHANGE (doyle GATE-PASS @e883f45, 2026-06-18): this ROOT is the SUPERSEDED v0.12.0 hypothesis — the post-L0 code ALREADY prevents the wedge, so NO fail-fast / worker-count code was added. serve_attach forwards fire-and-forget (net_stream_send op_id=None) and the broker-side send_stream is already BROKER-QUIC-DEADLINE-bounded (bounded_block_on, 10s); the loopback duplex is drained broker-INTERNALLY by the operator row's own read pump (RecvHalf::Loopback, retentive_cap==0 → evict-not-park) so a dead rc (a dropped IPC subscriber) never backs peer_w up; bounded_block_on parks the BROKER DISPATCH thread, not a net worker → no worker-pool exhaustion (full mechanism in the required_stages comment). Folds the status=online sub-check: a dead spt-hosted endpoint is marked OFFLINE within one reconcile tick on abrupt child death (broker exit-waiter reaps the session → B2 sees it absent) — PROVEN, no change. (v0.12.1)",
2026-06-21T23:42:57.8298917Z       "requiredStages": [
2026-06-21T23:42:57.8299088Z         "int"
2026-06-21T23:42:57.8299185Z       ],
2026-06-21T23:42:57.8299278Z       "stages": {
2026-06-21T23:42:57.8299368Z         "doc": {
2026-06-21T23:42:57.8299468Z           "complete": false,
2026-06-21T23:42:57.8299572Z           "evidence": []
2026-06-21T23:42:57.8299657Z         },
2026-06-21T23:42:57.8299737Z         "impl": {
2026-06-21T23:42:57.8299839Z           "complete": false,
2026-06-21T23:42:57.8299924Z           "evidence": []
2026-06-21T23:42:57.8300009Z         },
2026-06-21T23:42:57.8300096Z         "int": {
2026-06-21T23:42:57.8300182Z           "complete": true,
2026-06-21T23:42:57.8300276Z           "evidence": [
2026-06-21T23:42:57.8300362Z             {
2026-06-21T23:42:57.8300492Z               "path": "crates/spt/tests/attach_wedge_e2e.rs",
2026-06-21T23:42:57.8300577Z               "line": 300
2026-06-21T23:42:57.8300667Z             }
2026-06-21T23:42:57.8300759Z           ]
2026-06-21T23:42:57.8300844Z         },
2026-06-21T23:42:57.8300930Z         "unit": {
2026-06-21T23:42:57.8301011Z           "complete": false,
2026-06-21T23:42:57.8301103Z           "evidence": []
2026-06-21T23:42:57.8301187Z         }
2026-06-21T23:42:57.8301273Z       }
2026-06-21T23:42:57.8301360Z     },
2026-06-21T23:42:57.8301441Z     {
2026-06-21T23:42:57.8301559Z       "id": "REQ-HAZARD-BIND-CWD-UNSET",
2026-06-21T23:42:57.8304112Z       "title": "A bound endpoint's `info.cwd` is SET at bind so a freshly-created perch appears under its own project tab. ROOT (found, v0.13.0): `info.cwd` is NEVER set on bind — `cmd_bind` (spt-hosted) and `bind_from_seed` (harness-hosted) never thread cwd into `establish_perch`/`rec.cwd`. FIX: `cmd_bind` reads its own `current_dir` (the broker spawned it in `project_cwd`); `bind_from_seed` passes `seed.cwd` (already captured at seed time, currently DISCARDED). DISTINCT from REQ-PICKER-HISTORY-FRESH (v0.12.1) — that unioned cwd-origin into picker MEMBERSHIP but tested merge_origin_project with a PROVIDED origin; it never asserted `info.cwd` is actually set on bind, so a real `endpoint run` perch still had an empty cwd and the union had nothing to union. This is the v0.12.1 P1 'appears under its own project right away' claim that was REFUTED in the changelog — delivered for real here. (v0.13.0)",
2026-06-21T23:42:57.8304217Z       "requiredStages": [
2026-06-21T23:42:57.8304308Z         "impl",
2026-06-21T23:42:57.8304392Z         "unit",
2026-06-21T23:42:57.8304489Z         "int"
2026-06-21T23:42:57.8304570Z       ],
2026-06-21T23:42:57.8304651Z       "stages": {
2026-06-21T23:42:57.8304740Z         "doc": {
2026-06-21T23:42:57.8304950Z           "complete": false,
2026-06-21T23:42:57.8305041Z           "evidence": []
2026-06-21T23:42:57.8305121Z         },
2026-06-21T23:42:57.8305217Z         "impl": {
2026-06-21T23:42:57.8305299Z           "complete": true,
2026-06-21T23:42:57.8305384Z           "evidence": [
2026-06-21T23:42:57.8305474Z             {
2026-06-21T23:42:57.8305580Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:42:57.8305666Z               "line": 257
2026-06-21T23:42:57.8305751Z             }
2026-06-21T23:42:57.8305828Z           ]
2026-06-21T23:42:57.8305914Z         },
2026-06-21T23:42:57.8305994Z         "int": {
2026-06-21T23:42:57.8306080Z           "complete": true,
2026-06-21T23:42:57.8306276Z           "evidence": [
2026-06-21T23:42:57.8306366Z             {
2026-06-21T23:42:57.8306506Z               "path": "crates/spt/tests/bind_cwd_project_e2e.rs",
2026-06-21T23:42:57.8306600Z               "line": 93
2026-06-21T23:42:57.8306690Z             }
2026-06-21T23:42:57.8306762Z           ]
2026-06-21T23:42:57.8306854Z         },
2026-06-21T23:42:57.8306938Z         "unit": {
2026-06-21T23:42:57.8307023Z           "complete": true,
2026-06-21T23:42:57.8307104Z           "evidence": [
2026-06-21T23:42:57.8307190Z             {
2026-06-21T23:42:57.8307298Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:42:57.8307387Z               "line": 802
2026-06-21T23:42:57.8307474Z             },
2026-06-21T23:42:57.8307555Z             {
2026-06-21T23:42:57.8307673Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:42:57.8307759Z               "line": 824
2026-06-21T23:42:57.8307851Z             },
2026-06-21T23:42:57.8307932Z             {
2026-06-21T23:42:57.8308036Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:42:57.8308128Z               "line": 855
2026-06-21T23:42:57.8308208Z             }
2026-06-21T23:42:57.8308294Z           ]
2026-06-21T23:42:57.8308375Z         }
2026-06-21T23:42:57.8308457Z       }
2026-06-21T23:42:57.8308542Z     },
2026-06-21T23:42:57.8308628Z     {
2026-06-21T23:42:57.8308748Z       "id": "REQ-HAZARD-BRAIN-RESPAWN-PATH",
2026-06-21T23:42:57.8311290Z       "title": "The broker respawns the brain onto the APPLIED bytes, not the renamed old binary: the candidate-binary default is the canonical exe path captured ONCE at broker start, never a per-spawn std::env::current_exe() — on Linux current_exe (readlink /proc/self/exe) is inode-tracking and follows the `apply` rename (spt -> spt.old-N), so a resident broker would respawn the brain onto OLD bytes while recording `applied` (Windows GetModuleFileName is path-at-start, so Windows was green; ADR-0018 Q3 silently assumed path-string semantics). Backstop: promotion gates on bytes — a trial promotes only if brain.ready exe_hash == the staged artifact hash for this platform, else auto-rollback + loud notif (readiness != new-bytes was the false-success that recorded applied:8 over a v0.4.0 brain on kitsubito, 2026-06-11). KNOWN-HAZARDS 6.11.",
2026-06-21T23:42:57.8311404Z       "requiredStages": [
2026-06-21T23:42:57.8311495Z         "doc",
2026-06-21T23:42:57.8311580Z         "impl",
2026-06-21T23:42:57.8311663Z         "unit",
2026-06-21T23:42:57.8311752Z         "int"
2026-06-21T23:42:57.8311838Z       ],
2026-06-21T23:42:57.8311930Z       "stages": {
2026-06-21T23:42:57.8312016Z         "doc": {
2026-06-21T23:42:57.8312109Z           "complete": true,
2026-06-21T23:42:57.8312206Z           "evidence": [
2026-06-21T23:42:57.8312278Z             {
2026-06-21T23:42:57.8312391Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T23:42:57.8312476Z               "line": 333
2026-06-21T23:42:57.8312552Z             }
2026-06-21T23:42:57.8312643Z           ]
2026-06-21T23:42:57.8312731Z         },
2026-06-21T23:42:57.8312812Z         "impl": {
2026-06-21T23:42:57.8312898Z           "complete": true,
2026-06-21T23:42:57.8312989Z           "evidence": [
2026-06-21T23:42:57.8313060Z             {
2026-06-21T23:42:57.8313198Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:42:57.8313394Z               "line": 494
2026-06-21T23:42:57.8313479Z             },
2026-06-21T23:42:57.8313567Z             {
2026-06-21T23:42:57.8313681Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:42:57.8313775Z               "line": 499
2026-06-21T23:42:57.8313862Z             },
2026-06-21T23:42:57.8313947Z             {
2026-06-21T23:42:57.8314066Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:42:57.8314147Z               "line": 874
2026-06-21T23:42:57.8314234Z             },
2026-06-21T23:42:57.8314319Z             {
2026-06-21T23:42:57.8314443Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:42:57.8314619Z               "line": 915
2026-06-21T23:42:57.8314705Z             },
2026-06-21T23:42:57.8314787Z             {
2026-06-21T23:42:57.8314911Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:42:57.8315006Z               "line": 926
2026-06-21T23:42:57.8315087Z             },
2026-06-21T23:42:57.8315179Z             {
2026-06-21T23:42:57.8315305Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T23:42:57.8315390Z               "line": 358
2026-06-21T23:42:57.8315472Z             }
2026-06-21T23:42:57.8315554Z           ]
2026-06-21T23:42:57.8315639Z         },
2026-06-21T23:42:57.8315724Z         "int": {
2026-06-21T23:42:57.8315821Z           "complete": true,
2026-06-21T23:42:57.8315902Z           "evidence": [
2026-06-21T23:42:57.8315982Z             {
2026-06-21T23:42:57.8316112Z               "path": "crates/spt/tests/brain_respawn_rename.rs",
2026-06-21T23:42:57.8316197Z               "line": 30
2026-06-21T23:42:57.8316287Z             }
2026-06-21T23:42:57.8316363Z           ]
2026-06-21T23:42:57.8316451Z         },
2026-06-21T23:42:57.8316536Z         "unit": {
2026-06-21T23:42:57.8316621Z           "complete": true,
2026-06-21T23:42:57.8316707Z           "evidence": [
2026-06-21T23:42:57.8316793Z             {
2026-06-21T23:42:57.8316907Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:42:57.8317002Z               "line": 1493
2026-06-21T23:42:57.8317094Z             },
2026-06-21T23:42:57.8317174Z             {
2026-06-21T23:42:57.8317284Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:42:57.8317370Z               "line": 1518
2026-06-21T23:42:57.8317461Z             },
2026-06-21T23:42:57.8317546Z             {
2026-06-21T23:42:57.8317664Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:42:57.8317750Z               "line": 1535
2026-06-21T23:42:57.8317834Z             },
2026-06-21T23:42:57.8317929Z             {
2026-06-21T23:42:57.8318044Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:42:57.8318130Z               "line": 1578
2026-06-21T23:42:57.8318220Z             }
2026-06-21T23:42:57.8318301Z           ]
2026-06-21T23:42:57.8318387Z         }
2026-06-21T23:42:57.8318468Z       }
2026-06-21T23:42:57.8318549Z     },
2026-06-21T23:42:57.8318635Z     {
2026-06-21T23:42:57.8318783Z       "id": "REQ-HAZARD-BRAIN-RESTART-LIFECYCLE-REHYDRATE",
2026-06-21T23:42:57.8321449Z       "title": "B4 (deepest): a bare brain restart (broker survives) REHYDRATES the live-agent lifecycle so post-restart endpoints are hosted + attachable. Today resume_sessions (brainproc.rs:186, brain.rs:797-809) re-subscribes to the broker's PTY sessions but ALL BrainLifecycle instances (lifecycle.rs:58-130; the ephemeral brain.rs:254-275) are LOST on restart → a post-restart live endpoint gets no livehost → its Psyche is never (re)hosted and new spawns die / can't attach until a FULL daemon reset (operator: perri's brain kill+restart wedged everything until a full daemon kill). FIX: on brain startup, rebuild a BrainLifecycle per resumed live-capable session — load the manifest from the adapter registry → instantiate → start the pulse — the rehydrate the resume no-op cannot do. Composes with B2 (the reconcile re-hosts from the honest on-disk status after rehydrate). (v0.12.0)",
2026-06-21T23:42:57.8321693Z       "requiredStages": [],
2026-06-21T23:42:57.8321782Z       "stages": {
2026-06-21T23:42:57.8325323Z         "doc": {
2026-06-21T23:42:57.8325453Z           "complete": false,
2026-06-21T23:42:57.8325556Z           "evidence": []
2026-06-21T23:42:57.8325633Z         },
2026-06-21T23:42:57.8325720Z         "impl": {
2026-06-21T23:42:57.8325809Z           "complete": false,
2026-06-21T23:42:57.8325894Z           "evidence": []
2026-06-21T23:42:57.8325974Z         },
2026-06-21T23:42:57.8326061Z         "int": {
2026-06-21T23:42:57.8326147Z           "complete": false,
2026-06-21T23:42:57.8326237Z           "evidence": []
2026-06-21T23:42:57.8326476Z         },
2026-06-21T23:42:57.8326561Z         "unit": {
2026-06-21T23:42:57.8326648Z           "complete": false,
2026-06-21T23:42:57.8326743Z           "evidence": []
2026-06-21T23:42:57.8326824Z         }
2026-06-21T23:42:57.8326909Z       }
2026-06-21T23:42:57.8326991Z     },
2026-06-21T23:42:57.8327076Z     {
2026-06-21T23:42:57.8327229Z       "id": "REQ-HAZARD-BRAIN-RESTART-PSYCHE-DUP",
2026-06-21T23:42:57.8331067Z       "title": "A bare brain restart leaves EXACTLY ONE `{id}-psyche` process per endpoint — no duplicate. On an abrupt brain death stop_host never runs (the LiveSet + owned child handles die with the brain) and Breap's job/group only reaps at DAEMON stop, so the PRIOR brain's Psyche stays ALIVE; the respawned brain's reconcile re-hosts a SECOND Psyche and overwrites the `{id}-psyche` perch pid, leaving the old one untracked + alive = a duplicate that lingers until daemon-stop (the operator's 'brain kill+restart wedged everything'). FIX: at brain start, BEFORE the first reconcile re-hosts, reap any pre-existing `{id}-psyche` orphan — ID-SPECIFICALLY (recycle-safe on the shared box, where sibling agents share the `claude` basename): scoped-kill the recorded pid ONLY IF it is alive AND its exe basename == the adapter's psyche program (normalize_basename) AND its COMMAND LINE contains the full psyche id `<id>-psyche` (baked via {id}); a sibling never carries THIS id, and any unreadable signal FAILS SAFE (decline to reap — a missed dup is bounded by Breap, a wrong-kill is catastrophic). CAVEAT: the cmdline carries `<id>-psyche` only when the adapter's psyche_init.command uses {id} (the norm); a non-{id} adapter safely MISSES the reap (today's behavior, Breap bounds it) — never a wrong-kill. (v0.12.0)",
2026-06-21T23:42:57.8331191Z       "requiredStages": [
2026-06-21T23:42:57.8331280Z         "impl",
2026-06-21T23:42:57.8331360Z         "unit",
2026-06-21T23:42:57.8331447Z         "int"
2026-06-21T23:42:57.8331534Z       ],
2026-06-21T23:42:57.8331619Z       "stages": {
2026-06-21T23:42:57.8331713Z         "doc": {
2026-06-21T23:42:57.8331796Z           "complete": false,
2026-06-21T23:42:57.8331886Z           "evidence": []
2026-06-21T23:42:57.8331966Z         },
2026-06-21T23:42:57.8332057Z         "impl": {
2026-06-21T23:42:57.8332153Z           "complete": true,
2026-06-21T23:42:57.8332234Z           "evidence": [
2026-06-21T23:42:57.8332328Z             {
2026-06-21T23:42:57.8332453Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:42:57.8332544Z               "line": 570
2026-06-21T23:42:57.8332620Z             },
2026-06-21T23:42:57.8332701Z             {
2026-06-21T23:42:57.8332821Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:42:57.8332910Z               "line": 594
2026-06-21T23:42:57.8332992Z             },
2026-06-21T23:42:57.8333069Z             {
2026-06-21T23:42:57.8333187Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:42:57.8333283Z               "line": 620
2026-06-21T23:42:57.8333360Z             },
2026-06-21T23:42:57.8333450Z             {
2026-06-21T23:42:57.8333567Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:42:57.8333658Z               "line": 679
2026-06-21T23:42:57.8333734Z             },
2026-06-21T23:42:57.8333824Z             {
2026-06-21T23:42:57.8333937Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T23:42:57.8334114Z               "line": 89
2026-06-21T23:42:57.8334200Z             },
2026-06-21T23:42:57.8334280Z             {
2026-06-21T23:42:57.8334396Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T23:42:57.8334482Z               "line": 134
2026-06-21T23:42:57.8334561Z             }
2026-06-21T23:42:57.8334653Z           ]
2026-06-21T23:42:57.8334734Z         },
2026-06-21T23:42:57.8334810Z         "int": {
2026-06-21T23:42:57.8334895Z           "complete": true,
2026-06-21T23:42:57.8334987Z           "evidence": [
2026-06-21T23:42:57.8335068Z             {
2026-06-21T23:42:57.8335220Z               "path": "crates/spt/tests/brain_restart_psyche_dup_e2e.rs",
2026-06-21T23:42:57.8335411Z               "line": 20
2026-06-21T23:42:57.8335492Z             }
2026-06-21T23:42:57.8335568Z           ]
2026-06-21T23:42:57.8335645Z         },
2026-06-21T23:42:57.8335726Z         "unit": {
2026-06-21T23:42:57.8335807Z           "complete": true,
2026-06-21T23:42:57.8335902Z           "evidence": [
2026-06-21T23:42:57.8335984Z             {
2026-06-21T23:42:57.8336096Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:42:57.8336178Z               "line": 1047
2026-06-21T23:42:57.8336261Z             },
2026-06-21T23:42:57.8336351Z             {
2026-06-21T23:42:57.8336459Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T23:42:57.8336554Z               "line": 445
2026-06-21T23:42:57.8336645Z             }
2026-06-21T23:42:57.8336726Z           ]
2026-06-21T23:42:57.8336811Z         }
2026-06-21T23:42:57.8336898Z       }
2026-06-21T23:42:57.8336984Z     },
2026-06-21T23:42:57.8337064Z     {
2026-06-21T23:42:57.8337203Z       "id": "REQ-HAZARD-BROKER-PROCESS-ISOLATION",
2026-06-21T23:42:57.8339865Z       "title": "Broker and brain are separate processes: the broker runs as its own long-lived per-machine process that survives every brain restart, so a routine (brain-only) self-update restarts the brain onto the swapped binary while every hosted endpoint (PTY child, live QUIC conn, listening socket) stays untouched at the PROCESS level. The in-process-thread broker (daemon.rs:165-170) is a regression that silently unrealizes REQ-UPD-3 — apply degrades to an in-process Brain::handoff no-op and new code does not run until an unrelated restart (KNOWN-HAZARDS 6.7). Evidence must prove process-level survival (SPIKE-01/03 productionized as int: PTY child + live QUIC survive a brain-PROCESS restart onto a swapped binary), re-pointing the regression-masked in-process int tags currently on REQ-DAEMON-2 / REQ-UPD-3 (ADR-0018).",
2026-06-21T23:42:57.8339974Z       "requiredStages": [
2026-06-21T23:42:57.8340055Z         "doc",
2026-06-21T23:42:57.8340147Z         "impl",
2026-06-21T23:42:57.8340237Z         "unit",
2026-06-21T23:42:57.8340317Z         "int"
2026-06-21T23:42:57.8340404Z       ],
2026-06-21T23:42:57.8340490Z       "stages": {
2026-06-21T23:42:57.8340580Z         "doc": {
2026-06-21T23:42:57.8340661Z           "complete": true,
2026-06-21T23:42:57.8340758Z           "evidence": [
2026-06-21T23:42:57.8340837Z             {
2026-06-21T23:42:57.8340952Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T23:42:57.8341063Z               "line": 302
2026-06-21T23:42:57.8341148Z             }
2026-06-21T23:42:57.8341238Z           ]
2026-06-21T23:42:57.8341314Z         },
2026-06-21T23:42:57.8341402Z         "impl": {
2026-06-21T23:42:57.8341486Z           "complete": true,
2026-06-21T23:42:57.8341585Z           "evidence": [
2026-06-21T23:42:57.8341666Z             {
2026-06-21T23:42:57.8341794Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T23:42:57.8341888Z               "line": 108
2026-06-21T23:42:57.8341963Z             },
2026-06-21T23:42:57.8342050Z             {
2026-06-21T23:42:57.8342165Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T23:42:57.8342254Z               "line": 921
2026-06-21T23:42:57.8342341Z             },
2026-06-21T23:42:57.8342418Z             {
2026-06-21T23:42:57.8342646Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T23:42:57.8342737Z               "line": 1137
2026-06-21T23:42:57.8342818Z             },
2026-06-21T23:42:57.8342903Z             {
2026-06-21T23:42:57.8343028Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:42:57.8343123Z               "line": 23
2026-06-21T23:42:57.8343204Z             },
2026-06-21T23:42:57.8343285Z             {
2026-06-21T23:42:57.8343400Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:42:57.8343485Z               "line": 113
2026-06-21T23:42:57.8343556Z             },
2026-06-21T23:42:57.8343648Z             {
2026-06-21T23:42:57.8343866Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:42:57.8343944Z               "line": 158
2026-06-21T23:42:57.8344034Z             },
2026-06-21T23:42:57.8344119Z             {
2026-06-21T23:42:57.8344232Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:42:57.8344318Z               "line": 218
2026-06-21T23:42:57.8344407Z             },
2026-06-21T23:42:57.8344487Z             {
2026-06-21T23:42:57.8344598Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:42:57.8344689Z               "line": 261
2026-06-21T23:42:57.8344774Z             },
2026-06-21T23:42:57.8344855Z             {
2026-06-21T23:42:57.8344970Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:42:57.8345061Z               "line": 275
2026-06-21T23:42:57.8345140Z             },
2026-06-21T23:42:57.8345218Z             {
2026-06-21T23:42:57.8345328Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:42:57.8345413Z               "line": 320
2026-06-21T23:42:57.8345504Z             },
2026-06-21T23:42:57.8345585Z             {
2026-06-21T23:42:57.8345699Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:42:57.8345789Z               "line": 347
2026-06-21T23:42:57.8345872Z             },
2026-06-21T23:42:57.8345952Z             {
2026-06-21T23:42:57.8346071Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:42:57.8346162Z               "line": 359
2026-06-21T23:42:57.8346248Z             },
2026-06-21T23:42:57.8346328Z             {
2026-06-21T23:42:57.8346453Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:42:57.8346539Z               "line": 373
2026-06-21T23:42:57.8346629Z             },
2026-06-21T23:42:57.8346710Z             {
2026-06-21T23:42:57.8346831Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:42:57.8346925Z               "line": 400
2026-06-21T23:42:57.8347000Z             },
2026-06-21T23:42:57.8347085Z             {
2026-06-21T23:42:57.8347206Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:42:57.8347287Z               "line": 643
2026-06-21T23:42:57.8347371Z             },
2026-06-21T23:42:57.8347458Z             {
2026-06-21T23:42:57.8347582Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:42:57.8347667Z               "line": 989
2026-06-21T23:42:57.8347753Z             },
2026-06-21T23:42:57.8347840Z             {
2026-06-21T23:42:57.8347963Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:42:57.8348044Z               "line": 317
2026-06-21T23:42:57.8348131Z             },
2026-06-21T23:42:57.8348216Z             {
2026-06-21T23:42:57.8348325Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:42:57.8348422Z               "line": 1269
2026-06-21T23:42:57.8348503Z             },
2026-06-21T23:42:57.8348588Z             {
2026-06-21T23:42:57.8348702Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:42:57.8348794Z               "line": 1341
2026-06-21T23:42:57.8348882Z             },
2026-06-21T23:42:57.8349132Z             {
2026-06-21T23:42:57.8349249Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:42:57.8349334Z               "line": 1353
2026-06-21T23:42:57.8349431Z             },
2026-06-21T23:42:57.8349719Z             {
2026-06-21T23:42:57.8349830Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:42:57.8349909Z               "line": 2093
2026-06-21T23:42:57.8349996Z             },
2026-06-21T23:42:57.8350077Z             {
2026-06-21T23:42:57.8350182Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:42:57.8350267Z               "line": 188
2026-06-21T23:42:57.8350349Z             },
2026-06-21T23:42:57.8350430Z             {
2026-06-21T23:42:57.8350543Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:42:57.8350630Z               "line": 265
2026-06-21T23:42:57.8350712Z             },
2026-06-21T23:42:57.8350887Z             {
2026-06-21T23:42:57.8351007Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:42:57.8351102Z               "line": 276
2026-06-21T23:42:57.8351183Z             },
2026-06-21T23:42:57.8351264Z             {
2026-06-21T23:42:57.8351365Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:42:57.8351454Z               "line": 329
2026-06-21T23:42:57.8351540Z             },
2026-06-21T23:42:57.8351618Z             {
2026-06-21T23:42:57.8351740Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T23:42:57.8351827Z               "line": 56
2026-06-21T23:42:57.8351904Z             },
2026-06-21T23:42:57.8351990Z             {
2026-06-21T23:42:57.8352107Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T23:42:57.8352192Z               "line": 188
2026-06-21T23:42:57.8352288Z             },
2026-06-21T23:42:57.8352363Z             {
2026-06-21T23:42:57.8352467Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-21T23:42:57.8352562Z               "line": 82
2026-06-21T23:42:57.8352644Z             },
2026-06-21T23:42:57.8352734Z             {
2026-06-21T23:42:57.8352848Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T23:42:57.8352935Z               "line": 308
2026-06-21T23:42:57.8353021Z             },
2026-06-21T23:42:57.8353096Z             {
2026-06-21T23:42:57.8353216Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T23:42:57.8353302Z               "line": 424
2026-06-21T23:42:57.8353387Z             },
2026-06-21T23:42:57.8353468Z             {
2026-06-21T23:42:57.8353579Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.8353673Z               "line": 2006
2026-06-21T23:42:57.8353754Z             }
2026-06-21T23:42:57.8353836Z           ]
2026-06-21T23:42:57.8353922Z         },
2026-06-21T23:42:57.8354007Z         "int": {
2026-06-21T23:42:57.8354093Z           "complete": true,
2026-06-21T23:42:57.8354180Z           "evidence": [
2026-06-21T23:42:57.8354270Z             {
2026-06-21T23:42:57.8354379Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-21T23:42:57.8354466Z               "line": 57
2026-06-21T23:42:57.8354552Z             },
2026-06-21T23:42:57.8354641Z             {
2026-06-21T23:42:57.8354754Z               "path": "crates/spt/tests/n1_pairing.rs",
2026-06-21T23:42:57.8354850Z               "line": 41
2026-06-21T23:42:57.8354939Z             }
2026-06-21T23:42:57.8355024Z           ]
2026-06-21T23:42:57.8355110Z         },
2026-06-21T23:42:57.8355196Z         "unit": {
2026-06-21T23:42:57.8355287Z           "complete": true,
2026-06-21T23:42:57.8355372Z           "evidence": [
2026-06-21T23:42:57.8355458Z             {
2026-06-21T23:42:57.8355592Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T23:42:57.8355677Z               "line": 532
2026-06-21T23:42:57.8355758Z             },
2026-06-21T23:42:57.8355845Z             {
2026-06-21T23:42:57.8355968Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T23:42:57.8356059Z               "line": 757
2026-06-21T23:42:57.8356136Z             },
2026-06-21T23:42:57.8356221Z             {
2026-06-21T23:42:57.8356335Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:42:57.8356432Z               "line": 1067
2026-06-21T23:42:57.8356512Z             },
2026-06-21T23:42:57.8356688Z             {
2026-06-21T23:42:57.8356813Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:42:57.8356902Z               "line": 1101
2026-06-21T23:42:57.8356988Z             },
2026-06-21T23:42:57.8357071Z             {
2026-06-21T23:42:57.8357189Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:42:57.8357261Z               "line": 1143
2026-06-21T23:42:57.8357342Z             },
2026-06-21T23:42:57.8357433Z             {
2026-06-21T23:42:57.8357536Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:42:57.8357621Z               "line": 1215
2026-06-21T23:42:57.8357780Z             },
2026-06-21T23:42:57.8357865Z             {
2026-06-21T23:42:57.8357975Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:42:57.8358076Z               "line": 1228
2026-06-21T23:42:57.8358157Z             },
2026-06-21T23:42:57.8358236Z             {
2026-06-21T23:42:57.8358357Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:42:57.8358433Z               "line": 1251
2026-06-21T23:42:57.8358523Z             },
2026-06-21T23:42:57.8358604Z             {
2026-06-21T23:42:57.8358724Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:42:57.8358804Z               "line": 1277
2026-06-21T23:42:57.8358889Z             },
2026-06-21T23:42:57.8359048Z             {
2026-06-21T23:42:57.8359172Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:42:57.8359253Z               "line": 1291
2026-06-21T23:42:57.8359339Z             },
2026-06-21T23:42:57.8359438Z             {
2026-06-21T23:42:57.8359563Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:42:57.8359640Z               "line": 1315
2026-06-21T23:42:57.8359730Z             },
2026-06-21T23:42:57.8359809Z             {
2026-06-21T23:42:57.8359943Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:42:57.8360024Z               "line": 1447
2026-06-21T23:42:57.8360108Z             },
2026-06-21T23:42:57.8360198Z             {
2026-06-21T23:42:57.8360308Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:42:57.8360395Z               "line": 1623
2026-06-21T23:42:57.8360479Z             },
2026-06-21T23:42:57.8360560Z             {
2026-06-21T23:42:57.8360680Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:42:57.8360765Z               "line": 1678
2026-06-21T23:42:57.8360851Z             },
2026-06-21T23:42:57.8360924Z             {
2026-06-21T23:42:57.8361028Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:42:57.8361108Z               "line": 1724
2026-06-21T23:42:57.8361205Z             },
2026-06-21T23:42:57.8361291Z             {
2026-06-21T23:42:57.8361395Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:42:57.8361495Z               "line": 1769
2026-06-21T23:42:57.8361582Z             },
2026-06-21T23:42:57.8361686Z             {
2026-06-21T23:42:57.8361800Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:42:57.8361902Z               "line": 1813
2026-06-21T23:42:57.8362014Z             },
2026-06-21T23:42:57.8362115Z             {
2026-06-21T23:42:57.8362231Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:42:57.8362305Z               "line": 1855
2026-06-21T23:42:57.8362391Z             },
2026-06-21T23:42:57.8362469Z             {
2026-06-21T23:42:57.8362588Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:42:57.8362677Z               "line": 2447
2026-06-21T23:42:57.8362757Z             },
2026-06-21T23:42:57.8362843Z             {
2026-06-21T23:42:57.8362956Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T23:42:57.8363046Z               "line": 217
2026-06-21T23:42:57.8363132Z             },
2026-06-21T23:42:57.8363218Z             {
2026-06-21T23:42:57.8363337Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T23:42:57.8363523Z               "line": 233
2026-06-21T23:42:57.8363614Z             },
2026-06-21T23:42:57.8363694Z             {
2026-06-21T23:42:57.8363805Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T23:42:57.8363895Z               "line": 254
2026-06-21T23:42:57.8363971Z             },
2026-06-21T23:42:57.8364062Z             {
2026-06-21T23:42:57.8364177Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T23:42:57.8364267Z               "line": 265
2026-06-21T23:42:57.8364353Z             },
2026-06-21T23:42:57.8364430Z             {
2026-06-21T23:42:57.8364534Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T23:42:57.8364725Z               "line": 278
2026-06-21T23:42:57.8364802Z             },
2026-06-21T23:42:57.8364886Z             {
2026-06-21T23:42:57.8365011Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T23:42:57.8365093Z               "line": 289
2026-06-21T23:42:57.8365178Z             },
2026-06-21T23:42:57.8365272Z             {
2026-06-21T23:42:57.8365376Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T23:42:57.8365467Z               "line": 301
2026-06-21T23:42:57.8365546Z             },
2026-06-21T23:42:57.8365636Z             {
2026-06-21T23:42:57.8365742Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T23:42:57.8365833Z               "line": 312
2026-06-21T23:42:57.8365923Z             },
2026-06-21T23:42:57.8365999Z             {
2026-06-21T23:42:57.8366124Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T23:42:57.8366199Z               "line": 323
2026-06-21T23:42:57.8366285Z             },
2026-06-21T23:42:57.8366367Z             {
2026-06-21T23:42:57.8366486Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T23:42:57.8366576Z               "line": 332
2026-06-21T23:42:57.8366658Z             },
2026-06-21T23:42:57.8366738Z             {
2026-06-21T23:42:57.8366853Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T23:42:57.8366953Z               "line": 342
2026-06-21T23:42:57.8367039Z             },
2026-06-21T23:42:57.8367134Z             {
2026-06-21T23:42:57.8367253Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-21T23:42:57.8367340Z               "line": 358
2026-06-21T23:42:57.8367415Z             },
2026-06-21T23:42:57.8367497Z             {
2026-06-21T23:42:57.8367622Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T23:42:57.8367702Z               "line": 758
2026-06-21T23:42:57.8367782Z             },
2026-06-21T23:42:57.8367873Z             {
2026-06-21T23:42:57.8367989Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T23:42:57.8368082Z               "line": 794
2026-06-21T23:42:57.8368172Z             },
2026-06-21T23:42:57.8368258Z             {
2026-06-21T23:42:57.8368364Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T23:42:57.8368468Z               "line": 966
2026-06-21T23:42:57.8368544Z             },
2026-06-21T23:42:57.8368631Z             {
2026-06-21T23:42:57.8368754Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-21T23:42:57.8368839Z               "line": 145
2026-06-21T23:42:57.8368926Z             },
2026-06-21T23:42:57.8369107Z             {
2026-06-21T23:42:57.8369222Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-21T23:42:57.8369317Z               "line": 224
2026-06-21T23:42:57.8369398Z             },
2026-06-21T23:42:57.8369483Z             {
2026-06-21T23:42:57.8369590Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-21T23:42:57.8369684Z               "line": 293
2026-06-21T23:42:57.8369774Z             },
2026-06-21T23:42:57.8369857Z             {
2026-06-21T23:42:57.8369980Z               "path": "crates/spt/tests/brain_split.rs",
2026-06-21T23:42:57.8370075Z               "line": 17
2026-06-21T23:42:57.8370161Z             },
2026-06-21T23:42:57.8370238Z             {
2026-06-21T23:42:57.8370346Z               "path": "crates/spt/tests/brain_split.rs",
2026-06-21T23:42:57.8370546Z               "line": 104
2026-06-21T23:42:57.8370631Z             }
2026-06-21T23:42:57.8370715Z           ]
2026-06-21T23:42:57.8370796Z         }
2026-06-21T23:42:57.8370888Z       }
2026-06-21T23:42:57.8370973Z     },
2026-06-21T23:42:57.8371058Z     {
2026-06-21T23:42:57.8371188Z       "id": "REQ-HAZARD-BROKER-QUIC-DEADLINE",
2026-06-21T23:42:57.8374216Z       "title": "The broker bounds every brain-waiting QUIC op (dial / open_stream / send_stream) so a black-holed or dead peer fails PROMPTLY with an ORDINARY error the broker REPLIES, never an unbounded await. The bound (< the brain's 30s PUMP_PEER_IO_TIMEOUT so the BROKER fires first) surfaces to the pump as a normal broker error reply → peer_outcome's non-TimedOut arm → drop conn + redial next tick, the round CONTINUES and the heartbeat keeps advancing — it must NEVER manifest as the brain's own read-deadline (the A-half poison → supervised-restart path REQ-HAZARD-PUMP-IPC-DEADLINE guards). Exactly-once is preserved: a timed-out journaled op fails INSIDE its apply_once closure so no phantom conn_id/stream_id is recorded and a fresh tick re-dials cleanly. The happy path is unchanged (a live peer completes with zero added latency; the bound only bites a non-responsive peer). This is the ROOT-cause cure for the 2.2h hfenduleam pump wedge — a dead roster peer whose QUIC path the broker awaited unbounded — recurring on hfenduleam 2026-06-16.",
2026-06-21T23:42:57.8374427Z       "requiredStages": [
2026-06-21T23:42:57.8374512Z         "doc",
2026-06-21T23:42:57.8374598Z         "impl",
2026-06-21T23:42:57.8374690Z         "unit",
2026-06-21T23:42:57.8374774Z         "int"
2026-06-21T23:42:57.8374874Z       ],
2026-06-21T23:42:57.8374966Z       "stages": {
2026-06-21T23:42:57.8375052Z         "doc": {
2026-06-21T23:42:57.8375146Z           "complete": true,
2026-06-21T23:42:57.8375237Z           "evidence": [
2026-06-21T23:42:57.8375319Z             {
2026-06-21T23:42:57.8375432Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T23:42:57.8375533Z               "line": 388
2026-06-21T23:42:57.8375606Z             }
2026-06-21T23:42:57.8375687Z           ]
2026-06-21T23:42:57.8375770Z         },
2026-06-21T23:42:57.8375856Z         "impl": {
2026-06-21T23:42:57.8375951Z           "complete": true,
2026-06-21T23:42:57.8376041Z           "evidence": [
2026-06-21T23:42:57.8376121Z             {
2026-06-21T23:42:57.8376245Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T23:42:57.8376331Z               "line": 823
2026-06-21T23:42:57.8376421Z             },
2026-06-21T23:42:57.8376506Z             {
2026-06-21T23:42:57.8376631Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T23:42:57.8376722Z               "line": 846
2026-06-21T23:42:57.8376812Z             }
2026-06-21T23:42:57.8376898Z           ]
2026-06-21T23:42:57.8376979Z         },
2026-06-21T23:42:57.8377065Z         "int": {
2026-06-21T23:42:57.8377150Z           "complete": true,
2026-06-21T23:42:57.8377247Z           "evidence": [
2026-06-21T23:42:57.8377336Z             {
2026-06-21T23:42:57.8377465Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T23:42:57.8377552Z               "line": 228
2026-06-21T23:42:57.8377637Z             },
2026-06-21T23:42:57.8377728Z             {
2026-06-21T23:42:57.8377838Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-21T23:42:57.8377924Z               "line": 468
2026-06-21T23:42:57.8378013Z             }
2026-06-21T23:42:57.8378104Z           ]
2026-06-21T23:42:57.8378186Z         },
2026-06-21T23:42:57.8378271Z         "unit": {
2026-06-21T23:42:57.8378366Z           "complete": true,
2026-06-21T23:42:57.8378453Z           "evidence": [
2026-06-21T23:42:57.8378535Z             {
2026-06-21T23:42:57.8378647Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T23:42:57.8378737Z               "line": 1583
2026-06-21T23:42:57.8378823Z             }
2026-06-21T23:42:57.8378905Z           ]
2026-06-21T23:42:57.8379066Z         }
2026-06-21T23:42:57.8379258Z       }
2026-06-21T23:42:57.8379343Z     },
2026-06-21T23:42:57.8379434Z     {
2026-06-21T23:42:57.8379558Z       "id": "REQ-HAZARD-BROKER-SEED-WIRE-SKEW",
2026-06-21T23:42:57.8383159Z       "title": "A daemon-state wire-format change (e.g. the v0.9.0 adapter-agnostic Seed) does NOT take effect until a DELIBERATE full broker restart: the broker serves the seed-control channel and is RESIDENT across a brain-only self-update (ADR-0004 no-terminate-during-update forbids auto-killing it), so a NEW-version CLI talking to a still-resident OLD broker fails the seed handshake — the old broker cannot deserialize the new Seed (its formerly-required `adapter` field is gone) and drops the conn without an ack, which surfaces to the CLI as a raw UnexpectedEof 'failed to fill whole buffer'. spt-core must (a) surface an ACTIONABLE diagnostic on that seed-ack EOF (name the stale-broker cause + the `spt daemon stop` fix — the broker restarts on the next api call), never the cryptic io error; and (b) document the operational rule (a deliberate broker restart is required on any daemon-state wire change — NOT automatic) + the FORWARD discipline (daemon-state/Seed schema changes stay additive + serde-default so a resident OLD broker tolerates a NEW CLI across a brain-only update; note this would NOT have rescued 0.9.0 itself, since the old broker's `adapter` was a required field). perri PREP-4 FINDING 1 (v0.9.0 CLI vs stale 0.8.x broker).",
2026-06-21T23:42:57.8383389Z       "requiredStages": [
2026-06-21T23:42:57.8383478Z         "doc",
2026-06-21T23:42:57.8383560Z         "impl",
2026-06-21T23:42:57.8383651Z         "unit"
2026-06-21T23:42:57.8383741Z       ],
2026-06-21T23:42:57.8383840Z       "stages": {
2026-06-21T23:42:57.8383921Z         "doc": {
2026-06-21T23:42:57.8384025Z           "complete": true,
2026-06-21T23:42:57.8384109Z           "evidence": [
2026-06-21T23:42:57.8384200Z             {
2026-06-21T23:42:57.8384305Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T23:42:57.8384406Z               "line": 395
2026-06-21T23:42:57.8384495Z             }
2026-06-21T23:42:57.8384577Z           ]
2026-06-21T23:42:57.8384658Z         },
2026-06-21T23:42:57.8384749Z         "impl": {
2026-06-21T23:42:57.8384848Z           "complete": true,
2026-06-21T23:42:57.8384935Z           "evidence": [
2026-06-21T23:42:57.8385030Z             {
2026-06-21T23:42:57.8385153Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:42:57.8385235Z               "line": 75
2026-06-21T23:42:57.8385325Z             }
2026-06-21T23:42:57.8385411Z           ]
2026-06-21T23:42:57.8385487Z         },
2026-06-21T23:42:57.8385574Z         "int": {
2026-06-21T23:42:57.8385682Z           "complete": false,
2026-06-21T23:42:57.8385778Z           "evidence": []
2026-06-21T23:42:57.8385860Z         },
2026-06-21T23:42:57.8385951Z         "unit": {
2026-06-21T23:42:57.8386040Z           "complete": true,
2026-06-21T23:42:57.8386141Z           "evidence": [
2026-06-21T23:42:57.8386223Z             {
2026-06-21T23:42:57.8386335Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:42:57.8386430Z               "line": 632
2026-06-21T23:42:57.8386516Z             }
2026-06-21T23:42:57.8386601Z           ]
2026-06-21T23:42:57.8386685Z         }
2026-06-21T23:42:57.8386770Z       }
2026-06-21T23:42:57.8386857Z     },
2026-06-21T23:42:57.8386944Z     {
2026-06-21T23:42:57.8387062Z       "id": "REQ-HAZARD-CASCADE-WIPE-GUARD",
2026-06-21T23:42:57.8387244Z       "title": "No hard-delete of a parent hosting non-empty children (6.3)",
2026-06-21T23:42:57.8387343Z       "requiredStages": [
2026-06-21T23:42:57.8387429Z         "impl",
2026-06-21T23:42:57.8387507Z         "unit"
2026-06-21T23:42:57.8387597Z       ],
2026-06-21T23:42:57.8387686Z       "stages": {
2026-06-21T23:42:57.8387773Z         "doc": {
2026-06-21T23:42:57.8387859Z           "complete": false,
2026-06-21T23:42:57.8387945Z           "evidence": []
2026-06-21T23:42:57.8388030Z         },
2026-06-21T23:42:57.8388117Z         "impl": {
2026-06-21T23:42:57.8388288Z           "complete": true,
2026-06-21T23:42:57.8388383Z           "evidence": [
2026-06-21T23:42:57.8388465Z             {
2026-06-21T23:42:57.8388588Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:42:57.8388679Z               "line": 172
2026-06-21T23:42:57.8388756Z             },
2026-06-21T23:42:57.8388850Z             {
2026-06-21T23:42:57.8389042Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T23:42:57.8389123Z               "line": 18
2026-06-21T23:42:57.8389212Z             },
2026-06-21T23:42:57.8389302Z             {
2026-06-21T23:42:57.8389427Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T23:42:57.8389621Z               "line": 100
2026-06-21T23:42:57.8389708Z             }
2026-06-21T23:42:57.8389794Z           ]
2026-06-21T23:42:57.8389884Z         },
2026-06-21T23:42:57.8389964Z         "int": {
2026-06-21T23:42:57.8390057Z           "complete": false,
2026-06-21T23:42:57.8390147Z           "evidence": []
2026-06-21T23:42:57.8390237Z         },
2026-06-21T23:42:57.8390328Z         "unit": {
2026-06-21T23:42:57.8390409Z           "complete": true,
2026-06-21T23:42:57.8390504Z           "evidence": [
2026-06-21T23:42:57.8390589Z             {
2026-06-21T23:42:57.8390705Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:42:57.8390800Z               "line": 857
2026-06-21T23:42:57.8390885Z             },
2026-06-21T23:42:57.8390967Z             {
2026-06-21T23:42:57.8391081Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T23:42:57.8391171Z               "line": 161
2026-06-21T23:42:57.8391262Z             },
2026-06-21T23:42:57.8391344Z             {
2026-06-21T23:42:57.8391452Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T23:42:57.8391542Z               "line": 233
2026-06-21T23:42:57.8391633Z             }
2026-06-21T23:42:57.8391713Z           ]
2026-06-21T23:42:57.8391803Z         }
2026-06-21T23:42:57.8391892Z       }
2026-06-21T23:42:57.8391970Z     },
2026-06-21T23:42:57.8392061Z     {
2026-06-21T23:42:57.8392173Z       "id": "REQ-HAZARD-CHILD-CONSOLE-FLASH",
2026-06-21T23:42:57.8392600Z       "title": "Console-subsystem children of the console-less daemon spawn with CREATE_NO_WINDOW, or each spawn flashes a visible blank window on the user's desktop (5.8)",
2026-06-21T23:42:57.8392704Z       "requiredStages": [
2026-06-21T23:42:57.8392789Z         "impl",
2026-06-21T23:42:57.8392875Z         "unit"
2026-06-21T23:42:57.8392962Z       ],
2026-06-21T23:42:57.8393052Z       "stages": {
2026-06-21T23:42:57.8393141Z         "doc": {
2026-06-21T23:42:57.8393229Z           "complete": true,
2026-06-21T23:42:57.8393319Z           "evidence": [
2026-06-21T23:42:57.8393404Z             {
2026-06-21T23:42:57.8393510Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T23:42:57.8393591Z               "line": 220
2026-06-21T23:42:57.8393676Z             }
2026-06-21T23:42:57.8393757Z           ]
2026-06-21T23:42:57.8393849Z         },
2026-06-21T23:42:57.8393935Z         "impl": {
2026-06-21T23:42:57.8394024Z           "complete": true,
2026-06-21T23:42:57.8394110Z           "evidence": [
2026-06-21T23:42:57.8394193Z             {
2026-06-21T23:42:57.8394324Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T23:42:57.8394423Z               "line": 316
2026-06-21T23:42:57.8394505Z             },
2026-06-21T23:42:57.8394595Z             {
2026-06-21T23:42:57.8394712Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T23:42:57.8394803Z               "line": 356
2026-06-21T23:42:57.8394890Z             },
2026-06-21T23:42:57.8394966Z             {
2026-06-21T23:42:57.8395074Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T23:42:57.8395171Z               "line": 578
2026-06-21T23:42:57.8395256Z             },
2026-06-21T23:42:57.8395332Z             {
2026-06-21T23:42:57.8395457Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T23:42:57.8395543Z               "line": 77
2026-06-21T23:42:57.8395733Z             }
2026-06-21T23:42:57.8395814Z           ]
2026-06-21T23:42:57.8395904Z         },
2026-06-21T23:42:57.8395990Z         "int": {
2026-06-21T23:42:57.8396071Z           "complete": false,
2026-06-21T23:42:57.8396172Z           "evidence": []
2026-06-21T23:42:57.8396256Z         },
2026-06-21T23:42:57.8396348Z         "unit": {
2026-06-21T23:42:57.8396439Z           "complete": true,
2026-06-21T23:42:57.8396534Z           "evidence": [
2026-06-21T23:42:57.8396620Z             {
2026-06-21T23:42:57.8396740Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T23:42:57.8396835Z               "line": 747
2026-06-21T23:42:57.8396910Z             },
2026-06-21T23:42:57.8397072Z             {
2026-06-21T23:42:57.8397190Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T23:42:57.8397274Z               "line": 785
2026-06-21T23:42:57.8397360Z             },
2026-06-21T23:42:57.8397442Z             {
2026-06-21T23:42:57.8397560Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T23:42:57.8397636Z               "line": 166
2026-06-21T23:42:57.8397728Z             }
2026-06-21T23:42:57.8397813Z           ]
2026-06-21T23:42:57.8397898Z         }
2026-06-21T23:42:57.8397994Z       }
2026-06-21T23:42:57.8398067Z     },
2026-06-21T23:42:57.8398157Z     {
2026-06-21T23:42:57.8398280Z       "id": "REQ-HAZARD-CONFLICT-BOTH-PRESERVED",
2026-06-21T23:42:57.8398829Z       "title": "A surfaced concurrent context pair is durably preserved (both versions, tracked artifacts) until a strictly dominating write clears it; no reconcile failure path discards an unmerged version (6.6, ADR-0013)",
2026-06-21T23:42:57.8398924Z       "requiredStages": [
2026-06-21T23:42:57.8399138Z         "impl",
2026-06-21T23:42:57.8399263Z         "unit"
2026-06-21T23:42:57.8399378Z       ],
2026-06-21T23:42:57.8399501Z       "stages": {
2026-06-21T23:42:57.8399617Z         "doc": {
2026-06-21T23:42:57.8399716Z           "complete": false,
2026-06-21T23:42:57.8399810Z           "evidence": []
2026-06-21T23:42:57.8399895Z         },
2026-06-21T23:42:57.8399982Z         "impl": {
2026-06-21T23:42:57.8400064Z           "complete": true,
2026-06-21T23:42:57.8400158Z           "evidence": [
2026-06-21T23:42:57.8400239Z             {
2026-06-21T23:42:57.8400363Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-21T23:42:57.8400453Z               "line": 22
2026-06-21T23:42:57.8400534Z             },
2026-06-21T23:42:57.8400622Z             {
2026-06-21T23:42:57.8400735Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T23:42:57.8400830Z               "line": 487
2026-06-21T23:42:57.8400912Z             },
2026-06-21T23:42:57.8400997Z             {
2026-06-21T23:42:57.8401150Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-21T23:42:57.8401251Z               "line": 17
2026-06-21T23:42:57.8404950Z             },
2026-06-21T23:42:57.8405055Z             {
2026-06-21T23:42:57.8405197Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-21T23:42:57.8405315Z               "line": 147
2026-06-21T23:42:57.8405402Z             },
2026-06-21T23:42:57.8405478Z             {
2026-06-21T23:42:57.8405615Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T23:42:57.8405702Z               "line": 226
2026-06-21T23:42:57.8405784Z             },
2026-06-21T23:42:57.8405864Z             {
2026-06-21T23:42:57.8406012Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T23:42:57.8406131Z               "line": 251
2026-06-21T23:42:57.8406226Z             },
2026-06-21T23:42:57.8406312Z             {
2026-06-21T23:42:57.8406436Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T23:42:57.8406531Z               "line": 277
2026-06-21T23:42:57.8406617Z             },
2026-06-21T23:42:57.8406704Z             {
2026-06-21T23:42:57.8406826Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T23:42:57.8406917Z               "line": 124
2026-06-21T23:42:57.8407000Z             },
2026-06-21T23:42:57.8407232Z             {
2026-06-21T23:42:57.8407357Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T23:42:57.8407437Z               "line": 224
2026-06-21T23:42:57.8407522Z             }
2026-06-21T23:42:57.8407608Z           ]
2026-06-21T23:42:57.8407689Z         },
2026-06-21T23:42:57.8407773Z         "int": {
2026-06-21T23:42:57.8407858Z           "complete": false,
2026-06-21T23:42:57.8407954Z           "evidence": []
2026-06-21T23:42:57.8408030Z         },
2026-06-21T23:42:57.8408111Z         "unit": {
2026-06-21T23:42:57.8408211Z           "complete": true,
2026-06-21T23:42:57.8408293Z           "evidence": [
2026-06-21T23:42:57.8408477Z             {
2026-06-21T23:42:57.8408612Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-21T23:42:57.8408697Z               "line": 63
2026-06-21T23:42:57.8408788Z             },
2026-06-21T23:42:57.8408869Z             {
2026-06-21T23:42:57.8409065Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-21T23:42:57.8409145Z               "line": 73
2026-06-21T23:42:57.8409228Z             },
2026-06-21T23:42:57.8409313Z             {
2026-06-21T23:42:57.8409427Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-21T23:42:57.8409523Z               "line": 85
2026-06-21T23:42:57.8409609Z             },
2026-06-21T23:42:57.8409689Z             {
2026-06-21T23:42:57.8409804Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T23:42:57.8409886Z               "line": 346
2026-06-21T23:42:57.8409971Z             },
2026-06-21T23:42:57.8410052Z             {
2026-06-21T23:42:57.8410172Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-21T23:42:57.8410267Z               "line": 281
2026-06-21T23:42:57.8410346Z             },
2026-06-21T23:42:57.8410427Z             {
2026-06-21T23:42:57.8410547Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-21T23:42:57.8410629Z               "line": 322
2026-06-21T23:42:57.8410713Z             },
2026-06-21T23:42:57.8410799Z             {
2026-06-21T23:42:57.8410909Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-21T23:42:57.8410995Z               "line": 360
2026-06-21T23:42:57.8411080Z             },
2026-06-21T23:42:57.8411163Z             {
2026-06-21T23:42:57.8411277Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T23:42:57.8411371Z               "line": 688
2026-06-21T23:42:57.8411448Z             },
2026-06-21T23:42:57.8411534Z             {
2026-06-21T23:42:57.8411657Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T23:42:57.8411743Z               "line": 397
2026-06-21T23:42:57.8411826Z             },
2026-06-21T23:42:57.8411910Z             {
2026-06-21T23:42:57.8412029Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T23:42:57.8412121Z               "line": 440
2026-06-21T23:42:57.8412201Z             }
2026-06-21T23:42:57.8412282Z           ]
2026-06-21T23:42:57.8412368Z         }
2026-06-21T23:42:57.8412451Z       }
2026-06-21T23:42:57.8412539Z     },
2026-06-21T23:42:57.8412620Z     {
2026-06-21T23:42:57.8412725Z       "id": "REQ-HAZARD-CONPTY-DSR",
2026-06-21T23:42:57.8412942Z       "title": "ConPTY reader must auto-answer DSR (ESC[6n) or all child output stalls (5.5)",
2026-06-21T23:42:57.8413042Z       "requiredStages": [
2026-06-21T23:42:57.8413123Z         "impl",
2026-06-21T23:42:57.8413213Z         "unit"
2026-06-21T23:42:57.8413299Z       ],
2026-06-21T23:42:57.8413385Z       "stages": {
2026-06-21T23:42:57.8413472Z         "doc": {
2026-06-21T23:42:57.8413561Z           "complete": false,
2026-06-21T23:42:57.8413661Z           "evidence": []
2026-06-21T23:42:57.8413739Z         },
2026-06-21T23:42:57.8413829Z         "impl": {
2026-06-21T23:42:57.8413924Z           "complete": true,
2026-06-21T23:42:57.8414015Z           "evidence": [
2026-06-21T23:42:57.8414100Z             {
2026-06-21T23:42:57.8414219Z               "path": "crates/spt-term/src/reader.rs",
2026-06-21T23:42:57.8414305Z               "line": 169
2026-06-21T23:42:57.8414487Z             }
2026-06-21T23:42:57.8414572Z           ]
2026-06-21T23:42:57.8414654Z         },
2026-06-21T23:42:57.8414740Z         "int": {
2026-06-21T23:42:57.8414825Z           "complete": true,
2026-06-21T23:42:57.8414911Z           "evidence": [
2026-06-21T23:42:57.8414998Z             {
2026-06-21T23:42:57.8415111Z               "path": "crates/spt-term/tests/dsr.rs",
2026-06-21T23:42:57.8415192Z               "line": 44
2026-06-21T23:42:57.8415274Z             },
2026-06-21T23:42:57.8415360Z             {
2026-06-21T23:42:57.8415464Z               "path": "crates/spt-term/tests/dsr.rs",
2026-06-21T23:42:57.8415539Z               "line": 66
2026-06-21T23:42:57.8415747Z             }
2026-06-21T23:42:57.8415833Z           ]
2026-06-21T23:42:57.8415914Z         },
2026-06-21T23:42:57.8416000Z         "unit": {
2026-06-21T23:42:57.8416095Z           "complete": true,
2026-06-21T23:42:57.8416185Z           "evidence": [
2026-06-21T23:42:57.8416267Z             {
2026-06-21T23:42:57.8416391Z               "path": "crates/spt-term/src/reader.rs",
2026-06-21T23:42:57.8416481Z               "line": 186
2026-06-21T23:42:57.8416567Z             },
2026-06-21T23:42:57.8416653Z             {
2026-06-21T23:42:57.8416767Z               "path": "crates/spt-term/src/reader.rs",
2026-06-21T23:42:57.8416848Z               "line": 238
2026-06-21T23:42:57.8416935Z             },
2026-06-21T23:42:57.8417020Z             {
2026-06-21T23:42:57.8417120Z               "path": "crates/spt-term/src/reader.rs",
2026-06-21T23:42:57.8417211Z               "line": 266
2026-06-21T23:42:57.8417297Z             }
2026-06-21T23:42:57.8417387Z           ]
2026-06-21T23:42:57.8417477Z         }
2026-06-21T23:42:57.8417565Z       }
2026-06-21T23:42:57.8417650Z     },
2026-06-21T23:42:57.8417730Z     {
2026-06-21T23:42:57.8417856Z       "id": "REQ-HAZARD-CONTROLLER-GAP-RESUME",
2026-06-21T23:42:57.8424441Z       "title": "A serving CONTROLLER whose serve-brain hits a b4 drop-don't-block FORWARD output gap must RESUME-FROM-FLOOR (re-subscribe from delivered_through and re-fetch the dropped frames from the ring), NOT snap-above and NOT fatal. ROOT (v0.13.0 forkpty re-run, post-keystone): b4 made the controller a non-blocking try_send that DROPS frames when its bounded channel fills (a controller that falls behind its OWN echo under a hard flood), so the next read is a forward gap the strict reject-gap (brain.rs:624/628, B2 exactly-once) FATALS — wedged_viewer_does_not_stall_controller (attach.rs:1048) drove ctrl.read_event() raw and fataled on `output gap got 6134 want 4643`. Pre-b4 the inline sleep-poll BLOCKED the drain to the controller's rate (no drops, no gaps); this is a b4 SIDE-EFFECT, not a new class. A controller CANNOT snap (it is authoritative — advances delivered_through; skipping rolled frames = not-exactly-once = B2 violation), so REQ-HAZARD-VIEWER-RING-ROLL-SNAP does NOT apply. B2 INVARIANT (doyle, broker.rs:327-330): the ring trim is delivered_through-BLIND (`while ring.len() > cap_chunks { pop_front() }`), so re-fetch is exactly-once IFF tail - delivered_through <= cap_chunks (4096) — NOT guaranteed in general, but the common case (burst < ring; wedged_viewer ~1492 < 4096) holds. FIX: serve_attach catches the output-gap on the controller path (does not ?-propagate) and re-subscribes from Brain::controller_resume_floor (= delivered_through = the gap's `want`; NO mid-stream KIND_SESSIONS round-trip — sessions() loops on read_event and would re-fatal on the same gap + discard Output); the broker replays the dropped frames. The IRRECOVERABLE edge (floor unchanged across two resumes = ring rolled past delivered_through = frames gone) surfaces a MARKED truncation to the operator (never silent-skip = B2 lie, never spin) and ends cleanly — full graceful handling deferred to REQ-HAZARD-CONTROLLER-IRRECOVERABLE-BEHIND. Do NOT make the ring trim delivered_through-aware (that risks an unbounded ring under a stuck controller; the 5s eviction + 4096 ring is the practical bound). (v0.13.0)",
2026-06-21T23:42:57.8424585Z       "requiredStages": [
2026-06-21T23:42:57.8424775Z         "impl",
2026-06-21T23:42:57.8424865Z         "unit",
2026-06-21T23:42:57.8424952Z         "int"
2026-06-21T23:42:57.8425032Z       ],
2026-06-21T23:42:57.8425123Z       "stages": {
2026-06-21T23:42:57.8425210Z         "doc": {
2026-06-21T23:42:57.8425305Z           "complete": false,
2026-06-21T23:42:57.8425395Z           "evidence": []
2026-06-21T23:42:57.8425481Z         },
2026-06-21T23:42:57.8425568Z         "impl": {
2026-06-21T23:42:57.8425666Z           "complete": true,
2026-06-21T23:42:57.8425762Z           "evidence": [
2026-06-21T23:42:57.8425840Z             {
2026-06-21T23:42:57.8425967Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T23:42:57.8426166Z               "line": 109
2026-06-21T23:42:57.8426256Z             },
2026-06-21T23:42:57.8426340Z             {
2026-06-21T23:42:57.8426464Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T23:42:57.8426555Z               "line": 156
2026-06-21T23:42:57.8426650Z             },
2026-06-21T23:42:57.8426736Z             {
2026-06-21T23:42:57.8426852Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T23:42:57.8426951Z               "line": 261
2026-06-21T23:42:57.8427031Z             },
2026-06-21T23:42:57.8427118Z             {
2026-06-21T23:42:57.8427232Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T23:42:57.8427322Z               "line": 954
2026-06-21T23:42:57.8427403Z             }
2026-06-21T23:42:57.8427486Z           ]
2026-06-21T23:42:57.8427570Z         },
2026-06-21T23:42:57.8427651Z         "int": {
2026-06-21T23:42:57.8427737Z           "complete": true,
2026-06-21T23:42:57.8427824Z           "evidence": [
2026-06-21T23:42:57.8427914Z             {
2026-06-21T23:42:57.8428042Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T23:42:57.8428139Z               "line": 1051
2026-06-21T23:42:57.8428219Z             }
2026-06-21T23:42:57.8428300Z           ]
2026-06-21T23:42:57.8428382Z         },
2026-06-21T23:42:57.8428463Z         "unit": {
2026-06-21T23:42:57.8428562Z           "complete": true,
2026-06-21T23:42:57.8428652Z           "evidence": [
2026-06-21T23:42:57.8428733Z             {
2026-06-21T23:42:57.8428837Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T23:42:57.8428931Z               "line": 1498
2026-06-21T23:42:57.8429112Z             }
2026-06-21T23:42:57.8429189Z           ]
2026-06-21T23:42:57.8429288Z         }
2026-06-21T23:42:57.8429374Z       }
2026-06-21T23:42:57.8429456Z     },
2026-06-21T23:42:57.8429532Z     {
2026-06-21T23:42:57.8429679Z       "id": "REQ-HAZARD-CONTROLLER-IRRECOVERABLE-BEHIND",
2026-06-21T23:42:57.8432496Z       "title": "DEFERRED EDGE of REQ-HAZARD-CONTROLLER-GAP-RESUME: when a serving controller falls behind the live ring FURTHER than the ring holds (tail - delivered_through > cap_chunks, the ring trim being delivered_through-blind, broker.rs:327-330), the dropped frames have rolled OUT of the ring and an exactly-once re-fetch is IMPOSSIBLE. v0.13.0 DETECTS this (resume floor unchanged across two consecutive resumes) and surfaces a MARKED truncation notice to the operator then ends the attach cleanly — it never silent-skips (a B2 lie) and never spins. FULL graceful handling (a clearly-marked snap-with-data-loss that keeps the operator on the live tail, or a structured truncation record the rc renders distinctly, plus the controller-too-slow + ring-too-small backpressure/sizing policy) is DEFERRED — staging it needs a netsplit / deep-behind harness (the in-process loopback rig keeps up; wedged_viewer's gap is recoverable at ~1492 < 4096). (v0.13.0+)",
2026-06-21T23:42:57.8432612Z       "requiredStages": [],
2026-06-21T23:42:57.8432706Z       "stages": {
2026-06-21T23:42:57.8432797Z         "doc": {
2026-06-21T23:42:57.8432898Z           "complete": false,
2026-06-21T23:42:57.8432989Z           "evidence": []
2026-06-21T23:42:57.8433074Z         },
2026-06-21T23:42:57.8433164Z         "impl": {
2026-06-21T23:42:57.8433256Z           "complete": false,
2026-06-21T23:42:57.8433445Z           "evidence": []
2026-06-21T23:42:57.8433527Z         },
2026-06-21T23:42:57.8433618Z         "int": {
2026-06-21T23:42:57.8433697Z           "complete": false,
2026-06-21T23:42:57.8433792Z           "evidence": []
2026-06-21T23:42:57.8433878Z         },
2026-06-21T23:42:57.8433968Z         "unit": {
2026-06-21T23:42:57.8434052Z           "complete": false,
2026-06-21T23:42:57.8434142Z           "evidence": []
2026-06-21T23:42:57.8434229Z         }
2026-06-21T23:42:57.8434302Z       }
2026-06-21T23:42:57.8434386Z     },
2026-06-21T23:42:57.8434467Z     {
2026-06-21T23:42:57.8434592Z       "id": "REQ-HAZARD-CONTROLLER-RETAKE-FLOOR",
2026-06-21T23:42:57.8439019Z       "title": "`become_controller` should STRUCTURALLY refuse a controller re-take whose `from_seq` falls below the connection's already-delivered contiguous floor — making the P1c reorder invariant un-reintroducible by a future caller, not just removed at the one caller. ROOT/SCOPE (doyle proposed, P1c gate dialogue): P1c fixes REQ-HAZARD-CONTROLLER-WRITER-REORDER three ways (handoff single-take + epoch-gate-under-lock + session_cursors seed), removing the one decreasing-floor double-take and bounding any other to already-committed-only. A self-enforcing broker guard would refuse the bad SHAPE outright. BLOCKER: the obvious predicate (`from_seq >= delivered_through`) is UNSAFE because `delivered_through` is SESSION-WIDE (the `Arc<AtomicU64>` on `OutputLog`, shared by all controllers/viewers, advanced monotonic-MAX; `resume_seq` reads it) — a normal fresh-operator `from_seq=0` attach to a producing session legitimately sits below it (full ring replay + consumer dedup-below/snap-above), and monotonic-MAX can't distinguish the hazard (a `seq1`-without-`seq0` write reads as `2`). The structurally-correct guard needs a NEW per-connection contiguous-sent cursor (the true highest-contiguous seq this socket has received) that does not exist today; the guard then refuses a re-take below THAT. Bigger than P1c; no live gap (P1c fully fixes the actual bug). Mint/refine stages when the per-connection cursor is built. (v0.13.0 follow-up, post-ship)",
2026-06-21T23:42:57.8439155Z       "requiredStages": [],
2026-06-21T23:42:57.8439254Z       "stages": {
2026-06-21T23:42:57.8439346Z         "doc": {
2026-06-21T23:42:57.8439430Z           "complete": false,
2026-06-21T23:42:57.8439520Z           "evidence": []
2026-06-21T23:42:57.8439601Z         },
2026-06-21T23:42:57.8439692Z         "impl": {
2026-06-21T23:42:57.8439787Z           "complete": false,
2026-06-21T23:42:57.8439867Z           "evidence": []
2026-06-21T23:42:57.8439959Z         },
2026-06-21T23:42:57.8440040Z         "int": {
2026-06-21T23:42:57.8440144Z           "complete": false,
2026-06-21T23:42:57.8440240Z           "evidence": []
2026-06-21T23:42:57.8440326Z         },
2026-06-21T23:42:57.8440416Z         "unit": {
2026-06-21T23:42:57.8440502Z           "complete": false,
2026-06-21T23:42:57.8440598Z           "evidence": []
2026-06-21T23:42:57.8440683Z         }
2026-06-21T23:42:57.8440764Z       }
2026-06-21T23:42:57.8440850Z     },
2026-06-21T23:42:57.8440932Z     {
2026-06-21T23:42:57.8441060Z       "id": "REQ-HAZARD-CONTROLLER-WRITER-REORDER",
2026-06-21T23:42:57.8455056Z       "title": "Two `controller_writer` threads must never race ONE brain↔broker connection's socket. ROOT (doyle, instrumented RACEDIAG repro on kitsubito): on a brain-restart re-serve the handoff brain registers as controller on the SAME session TWICE over the SAME `Brain::conn` socket — (1) `Brain::handoff` eagerly `subscribe(prior.session_id, prior.next_seq=1)` → `become_controller(from_seq=1)`, initial=[1], spawns writer-A (writes seq 1); (2) `serve_attach` re-handles the replayed `Request{from_seq:0}` → `attach_as(sid,0)` → `become_controller(from_seq=0)`, initial=[0,1], spawns writer-B (writes 0 then 1). `become_controller` (broker.rs) drops the prior `ControllerSink` (its `tx`) but does NOT stop the prior writer thread — writer-A keeps flushing its owned `initial` batch, and both writers hold clones of the same `SharedSend` (`Arc<Mutex<socket>>`) with NO inter-thread ordering. When writer-A's seq 1 wins the socket before writer-B's seq 0, the strict legacy consumer (brain.rs read_event reject-gap path) sees `output gap: got seq 1 want 0` → the test `attach_survives_target_brain_restart_exactly_once` panics at `.expect(\"re-serve\")` OR HANGS in `render_until` (serve thread died on the gap → MARKER_TWO never reaches the wire). `prior.next_seq` is life1's CONSUMPTION cursor, NOT life2's connection state — life2's socket has been sent NOTHING, so a `from_seq=0` full replay on a connection that already streamed seq 1 is contradictory. Snap-above tolerance ALONE can't fix it (it would dedup-drop the late seq 0 → byte loss → the exactly-once byte-identity assert fails). PRE-EXISTING, surfaced by the v0.13.0 green-both-runners release gate; P1b is INNOCENT (its diff touches only input-ack machinery, proven mechanically + the test passes post-P1b in isolation). Sibling flaky cluster: `inject_control_wedge::g2`, `broker::spawn_env_reaches_child`. INVARIANT: on a single brain↔broker connection the controller output-frame stream is monotonic non-decreasing in seq (modulo dedup re-sends); exactly ONE `controller_writer` is ever live per connection; a SUPERSEDED writer writes NO further frames; a re-serve never replays a seq below what the connection already received. FIX (doyle design, corrected at the gate 2026-06-20): fix #1 as designed ('drop handoff's eager subscribe so serve_attach's attach_as is the sole registration') was REVERTED — handoff's `subscribe(prior.next_seq)` IS the standalone-resume mechanism (the brain-only update engine `apply_brain_only` + the `handoff`/`idempotent`/`daemon_e2e` int tests replay output through it with NO `serve_attach`; dropping it hung every resume-via-handoff test). The shipped fix is three parts: (1) CORRECTNESS — `Brain::handoff` seeds `session_cursors` at `prior.next_seq` so the consumer runs the production dedup-below+snap-above path, never the strict reject-gap legacy trap; this is COMPLETE (not merely tolerant) because every `controller_writer` emits an ASCENDING seq stream and the surviving writer (serve_attach's attach_as(sid,0)) offers the complete `[0,end]` range, so a snap-above merge of ascending writers delivers `[K,end]` with no skip/dup (first sighting of any seq>M is preceded by M on that writer). (2) INVARIANT — `controller_writer`'s INITIAL-BATCH replay is epoch-gated: `controller_epoch` is a shared `Arc<AtomicU64>`, the writer re-reads it UNDER `send.lock()` (atomically with `write_frame`) and returns the instant it is superseded — no check-then-block-then-write window, no superseded replay (W1-safe: never blocks the drain under `Mutex<OutputLog>`). The LIVE loop is NOT gated (new output only flows to the current controller; a superseded writer must still deliver its terminal `Displaced` kick — gating it suppressed the loud-take notice; it ends on `tx`-drop). (3) EXPLICIT-RESUME / OPERATOR-STREAM BOUNDARY (the LOAD-BEARING fix — kitsubito RACEDIAG ~33% repro the keystones missed) — `Brain::subscribe_with` (shared by attach/attach_as) resets the resume-mode dedup cursor to `from_seq`. The handoff eager subscribe makes serve_attach's brain receive the replay's seq K BEFORE the operator Request is processed (`attached`=false); that frame is dropped by the if-attached forward gate but the snap-above cursor already advanced past K, and `attach_as(sid,0)`'s re-subscribe used to leave the cursor advanced → the broker's re-send of seq K arrives below it, deduped, never forwarded → operator viewport forward-gap (silent content loss in the real rc consumer). Resetting to from_seq on the attach_as re-subscribe re-delivers from 0 (operator dedups the overlap) so seq K reaches the viewport. The epoch gate (2) is sound (RACEDIAG: zero socket interleaving above K); cold-start brains (empty map — production dispatch serve) keep the legacy next_seq path, so production is unaffected. (v0.13.0)",
2026-06-21T23:42:57.8455431Z       "requiredStages": [
2026-06-21T23:42:57.8455597Z         "doc",
2026-06-21T23:42:57.8455684Z         "impl",
2026-06-21T23:42:57.8455769Z         "unit",
2026-06-21T23:42:57.8455854Z         "int"
2026-06-21T23:42:57.8455946Z       ],
2026-06-21T23:42:57.8456027Z       "stages": {
2026-06-21T23:42:57.8456117Z         "doc": {
2026-06-21T23:42:57.8456207Z           "complete": true,
2026-06-21T23:42:57.8456308Z           "evidence": [
2026-06-21T23:42:57.8456393Z             {
2026-06-21T23:42:57.8456502Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T23:42:57.8456585Z               "line": 468
2026-06-21T23:42:57.8456661Z             }
2026-06-21T23:42:57.8456747Z           ]
2026-06-21T23:42:57.8456900Z         },
2026-06-21T23:42:57.8456990Z         "impl": {
2026-06-21T23:42:57.8457080Z           "complete": true,
2026-06-21T23:42:57.8457166Z           "evidence": [
2026-06-21T23:42:57.8457253Z             {
2026-06-21T23:42:57.8457375Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T23:42:57.8457461Z               "line": 348
2026-06-21T23:42:57.8457544Z             },
2026-06-21T23:42:57.8457629Z             {
2026-06-21T23:42:57.8457737Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T23:42:57.8457817Z               "line": 1282
2026-06-21T23:42:57.8457908Z             },
2026-06-21T23:42:57.8457984Z             {
2026-06-21T23:42:57.8458092Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:42:57.8458178Z               "line": 836
2026-06-21T23:42:57.8458264Z             }
2026-06-21T23:42:57.8458345Z           ]
2026-06-21T23:42:57.8458435Z         },
2026-06-21T23:42:57.8458517Z         "int": {
2026-06-21T23:42:57.8458607Z           "complete": true,
2026-06-21T23:42:57.8458707Z           "evidence": [
2026-06-21T23:42:57.8458788Z             {
2026-06-21T23:42:57.8458917Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T23:42:57.8459098Z               "line": 1206
2026-06-21T23:42:57.8459175Z             },
2026-06-21T23:42:57.8459260Z             {
2026-06-21T23:42:57.8459399Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T23:42:57.8459486Z               "line": 1307
2026-06-21T23:42:57.8459561Z             },
2026-06-21T23:42:57.8459637Z             {
2026-06-21T23:42:57.8459762Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T23:42:57.8459843Z               "line": 1169
2026-06-21T23:42:57.8459927Z             }
2026-06-21T23:42:57.8460004Z           ]
2026-06-21T23:42:57.8460082Z         },
2026-06-21T23:42:57.8460168Z         "unit": {
2026-06-21T23:42:57.8460266Z           "complete": true,
2026-06-21T23:42:57.8460360Z           "evidence": [
2026-06-21T23:42:57.8460451Z             {
2026-06-21T23:42:57.8460569Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:42:57.8460649Z               "line": 3091
2026-06-21T23:42:57.8460735Z             }
2026-06-21T23:42:57.8460817Z           ]
2026-06-21T23:42:57.8460898Z         }
2026-06-21T23:42:57.8460988Z       }
2026-06-21T23:42:57.8461074Z     },
2026-06-21T23:42:57.8461165Z     {
2026-06-21T23:42:57.8461283Z       "id": "REQ-HAZARD-DAEMON-HOSTED-LIVENESS",
2026-06-21T23:42:57.8461704Z       "title": "Daemon-hosted perches (Psyche, spt-hosted Self) derive liveness from the daemon endpoint table + info.json status, never is_process_alive(info.pid) (2.5)",
2026-06-21T23:42:57.8461794Z       "requiredStages": [
2026-06-21T23:42:57.8461880Z         "impl",
2026-06-21T23:42:57.8461961Z         "unit",
2026-06-21T23:42:57.8462043Z         "int"
2026-06-21T23:42:57.8462132Z       ],
2026-06-21T23:42:57.8462223Z       "stages": {
2026-06-21T23:42:57.8462299Z         "doc": {
2026-06-21T23:42:57.8462386Z           "complete": false,
2026-06-21T23:42:57.8462489Z           "evidence": []
2026-06-21T23:42:57.8462581Z         },
2026-06-21T23:42:57.8462663Z         "impl": {
2026-06-21T23:42:57.8462748Z           "complete": true,
2026-06-21T23:42:57.8462838Z           "evidence": [
2026-06-21T23:42:57.8462919Z             {
2026-06-21T23:42:57.8463147Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T23:42:57.8463232Z               "line": 178
2026-06-21T23:42:57.8463324Z             },
2026-06-21T23:42:57.8463406Z             {
2026-06-21T23:42:57.8463533Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T23:42:57.8463619Z               "line": 226
2026-06-21T23:42:57.8463710Z             },
2026-06-21T23:42:57.8463791Z             {
2026-06-21T23:42:57.8463920Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T23:42:57.8464001Z               "line": 79
2026-06-21T23:42:57.8464087Z             },
2026-06-21T23:42:57.8464172Z             {
2026-06-21T23:42:57.8464382Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T23:42:57.8464463Z               "line": 52
2026-06-21T23:42:57.8464549Z             },
2026-06-21T23:42:57.8464635Z             {
2026-06-21T23:42:57.8464744Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T23:42:57.8464839Z               "line": 263
2026-06-21T23:42:57.8464913Z             },
2026-06-21T23:42:57.8465002Z             {
2026-06-21T23:42:57.8465126Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T23:42:57.8465212Z               "line": 27
2026-06-21T23:42:57.8465303Z             },
2026-06-21T23:42:57.8465388Z             {
2026-06-21T23:42:57.8465496Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T23:42:57.8465583Z               "line": 79
2026-06-21T23:42:57.8465672Z             },
2026-06-21T23:42:57.8465756Z             {
2026-06-21T23:42:57.8465871Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T23:42:57.8465962Z               "line": 102
2026-06-21T23:42:57.8466053Z             },
2026-06-21T23:42:57.8466138Z             {
2026-06-21T23:42:57.8466253Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T23:42:57.8466348Z               "line": 116
2026-06-21T23:42:57.8466433Z             }
2026-06-21T23:42:57.8466516Z           ]
2026-06-21T23:42:57.8466611Z         },
2026-06-21T23:42:57.8466691Z         "int": {
2026-06-21T23:42:57.8466787Z           "complete": true,
2026-06-21T23:42:57.8466868Z           "evidence": [
2026-06-21T23:42:57.8466958Z             {
2026-06-21T23:42:57.8467092Z               "path": "crates/spt-daemon/tests/daemon_e2e.rs",
2026-06-21T23:42:57.8467174Z               "line": 43
2026-06-21T23:42:57.8467254Z             }
2026-06-21T23:42:57.8467330Z           ]
2026-06-21T23:42:57.8467421Z         },
2026-06-21T23:42:57.8467503Z         "unit": {
2026-06-21T23:42:57.8467602Z           "complete": true,
2026-06-21T23:42:57.8467692Z           "evidence": [
2026-06-21T23:42:57.8467775Z             {
2026-06-21T23:42:57.8467898Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T23:42:57.8467989Z               "line": 678
2026-06-21T23:42:57.8468065Z             },
2026-06-21T23:42:57.8468137Z             {
2026-06-21T23:42:57.8468264Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T23:42:57.8468364Z               "line": 495
2026-06-21T23:42:57.8468440Z             },
2026-06-21T23:42:57.8468525Z             {
2026-06-21T23:42:57.8468642Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T23:42:57.8468734Z               "line": 124
2026-06-21T23:42:57.8468820Z             },
2026-06-21T23:42:57.8468910Z             {
2026-06-21T23:42:57.8469092Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T23:42:57.8469172Z               "line": 143
2026-06-21T23:42:57.8469258Z             },
2026-06-21T23:42:57.8469344Z             {
2026-06-21T23:42:57.8469464Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T23:42:57.8469559Z               "line": 160
2026-06-21T23:42:57.8469644Z             },
2026-06-21T23:42:57.8469721Z             {
2026-06-21T23:42:57.8469839Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T23:42:57.8469935Z               "line": 187
2026-06-21T23:42:57.8470022Z             },
2026-06-21T23:42:57.8470108Z             {
2026-06-21T23:42:57.8470332Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-21T23:42:57.8470427Z               "line": 206
2026-06-21T23:42:57.8470521Z             },
2026-06-21T23:42:57.8470603Z             {
2026-06-21T23:42:57.8470718Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T23:42:57.8470793Z               "line": 229
2026-06-21T23:42:57.8470883Z             }
2026-06-21T23:42:57.8470964Z           ]
2026-06-21T23:42:57.8471050Z         }
2026-06-21T23:42:57.8471138Z       }
2026-06-21T23:42:57.8471209Z     },
2026-06-21T23:42:57.8471296Z     {
2026-06-21T23:42:57.8471416Z       "id": "REQ-HAZARD-DAEMON-SCHED-NONBLOCKING",
2026-06-21T23:42:57.8472148Z       "title": "Per-agent pulse/psyche/echo-commune scheduling must not serialize across agents: each agent's bounded LLM call (echo-commune summarizer, Psyche turn) runs off the shared scheduler so one slow/hung call cannot stall another agent's tick (7.4)",
2026-06-21T23:42:57.8472259Z       "requiredStages": [
2026-06-21T23:42:57.8472350Z         "impl",
2026-06-21T23:42:57.8472435Z         "unit"
2026-06-21T23:42:57.8472521Z       ],
2026-06-21T23:42:57.8472598Z       "stages": {
2026-06-21T23:42:57.8472683Z         "doc": {
2026-06-21T23:42:57.8472773Z           "complete": false,
2026-06-21T23:42:57.8472869Z           "evidence": []
2026-06-21T23:42:57.8472956Z         },
2026-06-21T23:42:57.8473035Z         "impl": {
2026-06-21T23:42:57.8473126Z           "complete": true,
2026-06-21T23:42:57.8473223Z           "evidence": [
2026-06-21T23:42:57.8473304Z             {
2026-06-21T23:42:57.8473427Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:42:57.8473524Z               "line": 1300
2026-06-21T23:42:57.8473610Z             },
2026-06-21T23:42:57.8473698Z             {
2026-06-21T23:42:57.8473806Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:42:57.8473903Z               "line": 1556
2026-06-21T23:42:57.8473985Z             }
2026-06-21T23:42:57.8474079Z           ]
2026-06-21T23:42:57.8474160Z         },
2026-06-21T23:42:57.8474242Z         "int": {
2026-06-21T23:42:57.8474337Z           "complete": false,
2026-06-21T23:42:57.8474427Z           "evidence": []
2026-06-21T23:42:57.8474514Z         },
2026-06-21T23:42:57.8474599Z         "unit": {
2026-06-21T23:42:57.8474694Z           "complete": true,
2026-06-21T23:42:57.8474775Z           "evidence": [
2026-06-21T23:42:57.8474857Z             {
2026-06-21T23:42:57.8474990Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-21T23:42:57.8475080Z               "line": 161
2026-06-21T23:42:57.8475162Z             }
2026-06-21T23:42:57.8475243Z           ]
2026-06-21T23:42:57.8475333Z         }
2026-06-21T23:42:57.8475424Z       }
2026-06-21T23:42:57.8475501Z     },
2026-06-21T23:42:57.8475586Z     {
2026-06-21T23:42:57.8475695Z       "id": "REQ-HAZARD-DAEMON-STOP-BARRIER",
2026-06-21T23:42:57.8477443Z       "title": "B3: `spt daemon stop` then an immediate `spt daemon start` does NOT race — stop fully completes before it returns. Today request_stop (seedmap.rs:240-255) returns on the KIND_STOPPING ack (sent seedmap.rs:174-176) BEFORE the seed socket unbinds, so a following is_running ping (daemon.rs:375) wins the exit window and start reports ALREADY_RUNNING (operator: daemon stop → STOPPED then start → ALREADY_RUNNING). FIX: unbind/stop-gate the seed socket BEFORE acking KIND_STOPPING, OR request_stop waits for a ping-to-fail before returning. Unit: stop then immediate is_running()==false. (v0.12.0)",
2026-06-21T23:42:57.8477556Z       "requiredStages": [
2026-06-21T23:42:57.8477637Z         "impl",
2026-06-21T23:42:57.8477715Z         "unit"
2026-06-21T23:42:57.8477809Z       ],
2026-06-21T23:42:57.8477895Z       "stages": {
2026-06-21T23:42:57.8477981Z         "doc": {
2026-06-21T23:42:57.8478072Z           "complete": false,
2026-06-21T23:42:57.8478171Z           "evidence": []
2026-06-21T23:42:57.8478248Z         },
2026-06-21T23:42:57.8478340Z         "impl": {
2026-06-21T23:42:57.8478515Z           "complete": true,
2026-06-21T23:42:57.8478616Z           "evidence": [
2026-06-21T23:42:57.8478707Z             {
2026-06-21T23:42:57.8478829Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T23:42:57.8478928Z               "line": 257
2026-06-21T23:42:57.8479094Z             }
2026-06-21T23:42:57.8479175Z           ]
2026-06-21T23:42:57.8479255Z         },
2026-06-21T23:42:57.8479337Z         "int": {
2026-06-21T23:42:57.8479456Z           "complete": false,
2026-06-21T23:42:57.8479541Z           "evidence": []
2026-06-21T23:42:57.8479628Z         },
2026-06-21T23:42:57.8479705Z         "unit": {
2026-06-21T23:42:57.8479804Z           "complete": true,
2026-06-21T23:42:57.8480033Z           "evidence": [
2026-06-21T23:42:57.8480119Z             {
2026-06-21T23:42:57.8480238Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T23:42:57.8480319Z               "line": 360
2026-06-21T23:42:57.8480404Z             }
2026-06-21T23:42:57.8480495Z           ]
2026-06-21T23:42:57.8480582Z         }
2026-06-21T23:42:57.8480668Z       }
2026-06-21T23:42:57.8480757Z     },
2026-06-21T23:42:57.8480834Z     {
2026-06-21T23:42:57.8480939Z       "id": "REQ-HAZARD-DAEMON-STOP-REAP",
2026-06-21T23:42:57.8482752Z       "title": "Breap: `spt daemon stop` REAPS the spt-hosted children it spawned — no orphaned psyche/harness processes. Today a stop leaves ~8 orphaned claude-spt-psyche.exe + spt.exe: Psyches are spawned DETACHED (runtime.rs:342-356, the Child is dropped — 'Detached' ~349) and the livehost stop flag Arc<AtomicBool> is NEVER raised (brainproc.rs:227-230 holds it 'for symmetry'). FIX: on stop, raise the livehost stop flag AND kill the spawned psyche/spt-hosted children — via a Windows job object / Unix process-group so the children die with the daemon (not detached-immortal). Folds with B3 (both the stop path). (v0.12.0)",
2026-06-21T23:42:57.8482843Z       "requiredStages": [
2026-06-21T23:42:57.8482929Z         "impl",
2026-06-21T23:42:57.8483019Z         "unit"
2026-06-21T23:42:57.8483109Z       ],
2026-06-21T23:42:57.8483192Z       "stages": {
2026-06-21T23:42:57.8483281Z         "doc": {
2026-06-21T23:42:57.8483386Z           "complete": false,
2026-06-21T23:42:57.8483482Z           "evidence": []
2026-06-21T23:42:57.8483568Z         },
2026-06-21T23:42:57.8483658Z         "impl": {
2026-06-21T23:42:57.8483749Z           "complete": true,
2026-06-21T23:42:57.8483850Z           "evidence": [
2026-06-21T23:42:57.8483934Z             {
2026-06-21T23:42:57.8484064Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:42:57.8484150Z               "line": 1018
2026-06-21T23:42:57.8484235Z             },
2026-06-21T23:42:57.8484315Z             {
2026-06-21T23:42:57.8484429Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:42:57.8484511Z               "line": 283
2026-06-21T23:42:57.8484596Z             },
2026-06-21T23:42:57.8484677Z             {
2026-06-21T23:42:57.8484788Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:42:57.8484883Z               "line": 316
2026-06-21T23:42:57.8484958Z             },
2026-06-21T23:42:57.8485030Z             {
2026-06-21T23:42:57.8485154Z               "path": "crates/spt-daemon/src/reap.rs",
2026-06-21T23:42:57.8485235Z               "line": 26
2026-06-21T23:42:57.8485326Z             }
2026-06-21T23:42:57.8485408Z           ]
2026-06-21T23:42:57.8485493Z         },
2026-06-21T23:42:57.8485573Z         "int": {
2026-06-21T23:42:57.8485664Z           "complete": false,
2026-06-21T23:42:57.8485761Z           "evidence": []
2026-06-21T23:42:57.8485845Z         },
2026-06-21T23:42:57.8485936Z         "unit": {
2026-06-21T23:42:57.8486033Z           "complete": true,
2026-06-21T23:42:57.8486127Z           "evidence": [
2026-06-21T23:42:57.8486213Z             {
2026-06-21T23:42:57.8486328Z               "path": "crates/spt-daemon/src/reap.rs",
2026-06-21T23:42:57.8486423Z               "line": 271
2026-06-21T23:42:57.8486508Z             },
2026-06-21T23:42:57.8486598Z             {
2026-06-21T23:42:57.8486824Z               "path": "crates/spt-daemon/src/reap.rs",
2026-06-21T23:42:57.8486910Z               "line": 348
2026-06-21T23:42:57.8486996Z             }
2026-06-21T23:42:57.8487078Z           ]
2026-06-21T23:42:57.8487163Z         }
2026-06-21T23:42:57.8487248Z       }
2026-06-21T23:42:57.8487330Z     },
2026-06-21T23:42:57.8487421Z     {
2026-06-21T23:42:57.8487530Z       "id": "REQ-HAZARD-DEFERRED-DRAIN",
2026-06-21T23:42:57.8487716Z       "title": "Deferred spool rows excluded from the event-stream drain (1.4)",
2026-06-21T23:42:57.8487801Z       "requiredStages": [
2026-06-21T23:42:57.8487882Z         "impl",
2026-06-21T23:42:57.8487965Z         "unit"
2026-06-21T23:42:57.8488126Z       ],
2026-06-21T23:42:57.8488221Z       "stages": {
2026-06-21T23:42:57.8488309Z         "doc": {
2026-06-21T23:42:57.8488398Z           "complete": false,
2026-06-21T23:42:57.8488493Z           "evidence": []
2026-06-21T23:42:57.8488575Z         },
2026-06-21T23:42:57.8488656Z         "impl": {
2026-06-21T23:42:57.8488760Z           "complete": true,
2026-06-21T23:42:57.8488861Z           "evidence": [
2026-06-21T23:42:57.8488934Z             {
2026-06-21T23:42:57.8489128Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T23:42:57.8489219Z               "line": 40
2026-06-21T23:42:57.8489305Z             },
2026-06-21T23:42:57.8489389Z             {
2026-06-21T23:42:57.8489498Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T23:42:57.8489585Z               "line": 103
2026-06-21T23:42:57.8489668Z             },
2026-06-21T23:42:57.8489758Z             {
2026-06-21T23:42:57.8489868Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T23:42:57.8489969Z               "line": 218
2026-06-21T23:42:57.8490049Z             },
2026-06-21T23:42:57.8490120Z             {
2026-06-21T23:42:57.8490236Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T23:42:57.8490326Z               "line": 323
2026-06-21T23:42:57.8490416Z             }
2026-06-21T23:42:57.8490503Z           ]
2026-06-21T23:42:57.8490593Z         },
2026-06-21T23:42:57.8490669Z         "int": {
2026-06-21T23:42:57.8490759Z           "complete": false,
2026-06-21T23:42:57.8490851Z           "evidence": []
2026-06-21T23:42:57.8490927Z         },
2026-06-21T23:42:57.8491017Z         "unit": {
2026-06-21T23:42:57.8491113Z           "complete": true,
2026-06-21T23:42:57.8491208Z           "evidence": [
2026-06-21T23:42:57.8491289Z             {
2026-06-21T23:42:57.8491408Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T23:42:57.8491509Z               "line": 361
2026-06-21T23:42:57.8491594Z             },
2026-06-21T23:42:57.8491680Z             {
2026-06-21T23:42:57.8491801Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T23:42:57.8491895Z               "line": 433
2026-06-21T23:42:57.8491975Z             },
2026-06-21T23:42:57.8492060Z             {
2026-06-21T23:42:57.8492170Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T23:42:57.8492254Z               "line": 496
2026-06-21T23:42:57.8492339Z             },
2026-06-21T23:42:57.8492425Z             {
2026-06-21T23:42:57.8492531Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T23:42:57.8492616Z               "line": 517
2026-06-21T23:42:57.8492706Z             }
2026-06-21T23:42:57.8492798Z           ]
2026-06-21T23:42:57.8492879Z         }
2026-06-21T23:42:57.8492963Z       }
2026-06-21T23:42:57.8493050Z     },
2026-06-21T23:42:57.8493131Z     {
2026-06-21T23:42:57.8493236Z       "id": "REQ-HAZARD-DEFERRED-MANIFEST",
2026-06-21T23:42:57.8495537Z       "title": "A pointer-mode (delegated / GhReleaseManaged) adapter whose binary/manifest is not yet extracted is reported with a CLEAR diagnostic, never silently dropped. Today such an adapter reads its manifest LIVE from source_dir (registry.rs manifest_dir ~146/149); a deferred / un-extracted install makes load_manifest fail → registered() (~410, filter_map(.ok())) SILENTLY DROPS the row → downstream ADAPTER_UNRESOLVED + a cryptic os-error-2 on `spt adapter use`. FIX: surface a clear diagnostic at the resolver + at `adapter use` (name the adapter + the deferred/missing-manifest cause + the fix), not a silent filter-drop and not a bare os-error-2; consider an eager manifest copy at register time so host_binaries survive before the binary download completes. doyle Finding A. (post-v0.10.0)",
2026-06-21T23:42:57.8495773Z       "requiredStages": [
2026-06-21T23:42:57.8495862Z         "impl",
2026-06-21T23:42:57.8495944Z         "unit"
2026-06-21T23:42:57.8496034Z       ],
2026-06-21T23:42:57.8496120Z       "stages": {
2026-06-21T23:42:57.8496205Z         "doc": {
2026-06-21T23:42:57.8496297Z           "complete": false,
2026-06-21T23:42:57.8496491Z           "evidence": []
2026-06-21T23:42:57.8496579Z         },
2026-06-21T23:42:57.8496664Z         "impl": {
2026-06-21T23:42:57.8496763Z           "complete": true,
2026-06-21T23:42:57.8496850Z           "evidence": [
2026-06-21T23:42:57.8496941Z             {
2026-06-21T23:42:57.8497073Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T23:42:57.8497172Z               "line": 402
2026-06-21T23:42:57.8497263Z             },
2026-06-21T23:42:57.8497347Z             {
2026-06-21T23:42:57.8497470Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T23:42:57.8497561Z               "line": 446
2026-06-21T23:42:57.8497638Z             }
2026-06-21T23:42:57.8497723Z           ]
2026-06-21T23:42:57.8497804Z         },
2026-06-21T23:42:57.8497900Z         "int": {
2026-06-21T23:42:57.8497986Z           "complete": false,
2026-06-21T23:42:57.8498076Z           "evidence": []
2026-06-21T23:42:57.8498157Z         },
2026-06-21T23:42:57.8498258Z         "unit": {
2026-06-21T23:42:57.8498339Z           "complete": true,
2026-06-21T23:42:57.8498433Z           "evidence": [
2026-06-21T23:42:57.8498525Z             {
2026-06-21T23:42:57.8498634Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T23:42:57.8498734Z               "line": 910
2026-06-21T23:42:57.8498820Z             }
2026-06-21T23:42:57.8498906Z           ]
2026-06-21T23:42:57.8499068Z         }
2026-06-21T23:42:57.8499155Z       }
2026-06-21T23:42:57.8499244Z     },
2026-06-21T23:42:57.8499321Z     {
2026-06-21T23:42:57.8499450Z       "id": "REQ-HAZARD-DEFERRED-SURVIVE-DRAIN",
2026-06-21T23:42:57.8499578Z       "title": "Deferred rows survive poll drain (4.4)",
2026-06-21T23:42:57.8499678Z       "requiredStages": [
2026-06-21T23:42:57.8499765Z         "impl",
2026-06-21T23:42:57.8499851Z         "unit"
2026-06-21T23:42:57.8499935Z       ],
2026-06-21T23:42:57.8500020Z       "stages": {
2026-06-21T23:42:57.8500101Z         "doc": {
2026-06-21T23:42:57.8500201Z           "complete": false,
2026-06-21T23:42:57.8500290Z           "evidence": []
2026-06-21T23:42:57.8500375Z         },
2026-06-21T23:42:57.8500457Z         "impl": {
2026-06-21T23:42:57.8500557Z           "complete": true,
2026-06-21T23:42:57.8500638Z           "evidence": [
2026-06-21T23:42:57.8500719Z             {
2026-06-21T23:42:57.8500834Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T23:42:57.8500933Z               "line": 116
2026-06-21T23:42:57.8501009Z             },
2026-06-21T23:42:57.8504068Z             {
2026-06-21T23:42:57.8504220Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T23:42:57.8504317Z               "line": 211
2026-06-21T23:42:57.8504406Z             }
2026-06-21T23:42:57.8504478Z           ]
2026-06-21T23:42:57.8504564Z         },
2026-06-21T23:42:57.8504650Z         "int": {
2026-06-21T23:42:57.8504744Z           "complete": false,
2026-06-21T23:42:57.8504835Z           "evidence": []
2026-06-21T23:42:57.8504923Z         },
2026-06-21T23:42:57.8505021Z         "unit": {
2026-06-21T23:42:57.8505112Z           "complete": true,
2026-06-21T23:42:57.8505204Z           "evidence": [
2026-06-21T23:42:57.8505290Z             {
2026-06-21T23:42:57.8505411Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T23:42:57.8505502Z               "line": 388
2026-06-21T23:42:57.8505712Z             },
2026-06-21T23:42:57.8505792Z             {
2026-06-21T23:42:57.8505903Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T23:42:57.8505999Z               "line": 469
2026-06-21T23:42:57.8506083Z             }
2026-06-21T23:42:57.8506165Z           ]
2026-06-21T23:42:57.8506256Z         }
2026-06-21T23:42:57.8506337Z       }
2026-06-21T23:42:57.8506422Z     },
2026-06-21T23:42:57.8506499Z     {
2026-06-21T23:42:57.8506632Z       "id": "REQ-HAZARD-DETACHED-PIPE-INHERIT",
2026-06-21T23:42:57.8507746Z       "title": "Windows detached long-lived children must not inherit a captured caller's pipe: every detach-spawn of an immortal child (daemon, shell binary) runs bInheritHandles=FALSE, or a caller capturing output anywhere up the process chain hangs forever on a pipe that never EOFs — std-handle flag stripping is NOT sufficient (grandparent strays still flow) (5.6)",
2026-06-21T23:42:57.8507945Z       "requiredStages": [
2026-06-21T23:42:57.8508035Z         "impl",
2026-06-21T23:42:57.8508121Z         "unit"
2026-06-21T23:42:57.8508198Z       ],
2026-06-21T23:42:57.8508283Z       "stages": {
2026-06-21T23:42:57.8508364Z         "doc": {
2026-06-21T23:42:57.8508455Z           "complete": true,
2026-06-21T23:42:57.8508541Z           "evidence": [
2026-06-21T23:42:57.8508626Z             {
2026-06-21T23:42:57.8508727Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T23:42:57.8508818Z               "line": 206
2026-06-21T23:42:57.8508904Z             }
2026-06-21T23:42:57.8509114Z           ]
2026-06-21T23:42:57.8509204Z         },
2026-06-21T23:42:57.8509284Z         "impl": {
2026-06-21T23:42:57.8509381Z           "complete": true,
2026-06-21T23:42:57.8509467Z           "evidence": [
2026-06-21T23:42:57.8509552Z             {
2026-06-21T23:42:57.8509671Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:42:57.8509763Z               "line": 691
2026-06-21T23:42:57.8509847Z             },
2026-06-21T23:42:57.8509928Z             {
2026-06-21T23:42:57.8510059Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:42:57.8510143Z               "line": 791
2026-06-21T23:42:57.8510233Z             },
2026-06-21T23:42:57.8510311Z             {
2026-06-21T23:42:57.8510430Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:42:57.8510519Z               "line": 1120
2026-06-21T23:42:57.8510599Z             },
2026-06-21T23:42:57.8510690Z             {
2026-06-21T23:42:57.8510807Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T23:42:57.8510898Z               "line": 184
2026-06-21T23:42:57.8510974Z             }
2026-06-21T23:42:57.8511056Z           ]
2026-06-21T23:42:57.8511146Z         },
2026-06-21T23:42:57.8511227Z         "int": {
2026-06-21T23:42:57.8511323Z           "complete": false,
2026-06-21T23:42:57.8511418Z           "evidence": []
2026-06-21T23:42:57.8511512Z         },
2026-06-21T23:42:57.8511589Z         "unit": {
2026-06-21T23:42:57.8511676Z           "complete": true,
2026-06-21T23:42:57.8511771Z           "evidence": [
2026-06-21T23:42:57.8511846Z             {
2026-06-21T23:42:57.8511967Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:42:57.8512051Z               "line": 1169
2026-06-21T23:42:57.8512137Z             },
2026-06-21T23:42:57.8512213Z             {
2026-06-21T23:42:57.8512338Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-21T23:42:57.8512428Z               "line": 44
2026-06-21T23:42:57.8512514Z             },
2026-06-21T23:42:57.8512601Z             {
2026-06-21T23:42:57.8512728Z               "path": "crates/spt/tests/shell_actgate_e2e.rs",
2026-06-21T23:42:57.8512820Z               "line": 52
2026-06-21T23:42:57.8512906Z             },
2026-06-21T23:42:57.8512992Z             {
2026-06-21T23:42:57.8513095Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-21T23:42:57.8513180Z               "line": 57
2026-06-21T23:42:57.8513267Z             },
2026-06-21T23:42:57.8513346Z             {
2026-06-21T23:42:57.8513589Z               "path": "crates/spt/tests/shell_sleepwake_e2e.rs",
2026-06-21T23:42:57.8513670Z               "line": 54
2026-06-21T23:42:57.8513755Z             }
2026-06-21T23:42:57.8513832Z           ]
2026-06-21T23:42:57.8513918Z         }
2026-06-21T23:42:57.8513999Z       }
2026-06-21T23:42:57.8514084Z     },
2026-06-21T23:42:57.8514170Z     {
2026-06-21T23:42:57.8514299Z       "id": "REQ-HAZARD-DIRECT-WRITE-PRECEDENCE",
2026-06-21T23:42:57.8514519Z       "title": "Direct-write precedence marker (with node id) guards stale overwrite (6.5)",
2026-06-21T23:42:57.8514618Z       "requiredStages": [
2026-06-21T23:42:57.8514704Z         "impl",
2026-06-21T23:42:57.8514905Z         "unit"
2026-06-21T23:42:57.8514990Z       ],
2026-06-21T23:42:57.8515076Z       "stages": {
2026-06-21T23:42:57.8515159Z         "doc": {
2026-06-21T23:42:57.8515252Z           "complete": false,
2026-06-21T23:42:57.8515343Z           "evidence": []
2026-06-21T23:42:57.8515420Z         },
2026-06-21T23:42:57.8515502Z         "impl": {
2026-06-21T23:42:57.8515591Z           "complete": true,
2026-06-21T23:42:57.8515687Z           "evidence": [
2026-06-21T23:42:57.8515769Z             {
2026-06-21T23:42:57.8515896Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T23:42:57.8515986Z               "line": 26
2026-06-21T23:42:57.8516071Z             },
2026-06-21T23:42:57.8516153Z             {
2026-06-21T23:42:57.8516263Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T23:42:57.8516357Z               "line": 135
2026-06-21T23:42:57.8516435Z             },
2026-06-21T23:42:57.8516521Z             {
2026-06-21T23:42:57.8516648Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T23:42:57.8516740Z               "line": 26
2026-06-21T23:42:57.8516830Z             },
2026-06-21T23:42:57.8516911Z             {
2026-06-21T23:42:57.8517035Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T23:42:57.8517121Z               "line": 237
2026-06-21T23:42:57.8517206Z             }
2026-06-21T23:42:57.8517283Z           ]
2026-06-21T23:42:57.8517364Z         },
2026-06-21T23:42:57.8517441Z         "int": {
2026-06-21T23:42:57.8517530Z           "complete": false,
2026-06-21T23:42:57.8517621Z           "evidence": []
2026-06-21T23:42:57.8517704Z         },
2026-06-21T23:42:57.8517784Z         "unit": {
2026-06-21T23:42:57.8517883Z           "complete": true,
2026-06-21T23:42:57.8517970Z           "evidence": [
2026-06-21T23:42:57.8518052Z             {
2026-06-21T23:42:57.8518160Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T23:42:57.8518240Z               "line": 161
2026-06-21T23:42:57.8518326Z             },
2026-06-21T23:42:57.8518421Z             {
2026-06-21T23:42:57.8518538Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T23:42:57.8518619Z               "line": 170
2026-06-21T23:42:57.8518705Z             },
2026-06-21T23:42:57.8518788Z             {
2026-06-21T23:42:57.8518891Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T23:42:57.8519040Z               "line": 179
2026-06-21T23:42:57.8519116Z             },
2026-06-21T23:42:57.8519215Z             {
2026-06-21T23:42:57.8519321Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T23:42:57.8519425Z               "line": 190
2026-06-21T23:42:57.8519506Z             },
2026-06-21T23:42:57.8519587Z             {
2026-06-21T23:42:57.8519702Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T23:42:57.8519788Z               "line": 199
2026-06-21T23:42:57.8519873Z             },
2026-06-21T23:42:57.8519955Z             {
2026-06-21T23:42:57.8520064Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T23:42:57.8520150Z               "line": 216
2026-06-21T23:42:57.8520231Z             },
2026-06-21T23:42:57.8520318Z             {
2026-06-21T23:42:57.8520421Z               "path": "crates/spt-live/src/context.rs",
2026-06-21T23:42:57.8520512Z               "line": 242
2026-06-21T23:42:57.8520590Z             },
2026-06-21T23:42:57.8520780Z             {
2026-06-21T23:42:57.8520885Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T23:42:57.8520972Z               "line": 295
2026-06-21T23:42:57.8521055Z             },
2026-06-21T23:42:57.8521141Z             {
2026-06-21T23:42:57.8521250Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T23:42:57.8521331Z               "line": 244
2026-06-21T23:42:57.8521420Z             },
2026-06-21T23:42:57.8521500Z             {
2026-06-21T23:42:57.8521620Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T23:42:57.8521701Z               "line": 265
2026-06-21T23:42:57.8521782Z             },
2026-06-21T23:42:57.8521963Z             {
2026-06-21T23:42:57.8522072Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T23:42:57.8522164Z               "line": 293
2026-06-21T23:42:57.8522241Z             },
2026-06-21T23:42:57.8522322Z             {
2026-06-21T23:42:57.8522445Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T23:42:57.8522536Z               "line": 317
2026-06-21T23:42:57.8522621Z             },
2026-06-21T23:42:57.8522702Z             {
2026-06-21T23:42:57.8522827Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-21T23:42:57.8522913Z               "line": 327
2026-06-21T23:42:57.8523003Z             },
2026-06-21T23:42:57.8523084Z             {
2026-06-21T23:42:57.8523200Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T23:42:57.8523283Z               "line": 540
2026-06-21T23:42:57.8523370Z             }
2026-06-21T23:42:57.8523457Z           ]
2026-06-21T23:42:57.8523538Z         }
2026-06-21T23:42:57.8523627Z       }
2026-06-21T23:42:57.8523716Z     },
2026-06-21T23:42:57.8523798Z     {
2026-06-21T23:42:57.8523920Z       "id": "REQ-HAZARD-DRIVEN-BY-IDLE-REMOTE-EVICT",
2026-06-21T23:42:57.8528683Z       "title": "An spt-hosted endpoint driven by a REMOTE controller whose remote is gone but whose broker connection stays OPEN (a wedged/lost pump that never delivers the detach) AND whose session is IDLE (no output) stays latched ONLINE+CONTROLLED forever: the W1 drain-evict only fires on OUTPUT (CONTROLLER_WRITE_DEADLINE on a backed-up write), a clean disconnect self-heals via detach_if→clear_controller, but an idle session with a half-open/wedged controller connection produces neither signal. PROVED repro-first on a real broker (v0.13.0 W5, inject_control_wedge.rs w5_a2): controller_by STAYS Some(origin) and driven_by STAYS Some after the remote is abandoned without a clean EOF on an idle session — so the brain reconcile CANNOT detect it from KIND_SESSIONS controller_by (the broker still reports it controlled). FIX DIRECTION (doyle ruling 2026-06-19, broker-side single-writer — the broker owns driven_by/clear_controller): wire the EXISTING D4c NetPresence connection-disconnect event → clear_controller for any session whose controller identity == the dead origin (become_controller already stores Some(origin); presence events already exist — modest wiring, NOT a new probe). The liveness ORACLE is QUIC's own keepalive/idle-timeout: a presence-disconnect IS a real QUIC conn close, already tolerant of transient blips within the keepalive window, so NO heavy partition ADR is needed UNLESS the QUIC timeout proves too slow for the UX (then mint an ADR for a faster controller-heartbeat + its false-evict bound). Composes with W1 (output path) + W5 Gap B (no-session) — this is the third, idle-remote, leg. (v0.13.0 follow-up)",
2026-06-21T23:42:57.8528800Z       "requiredStages": [],
2026-06-21T23:42:57.8528886Z       "stages": {
2026-06-21T23:42:57.8529056Z         "doc": {
2026-06-21T23:42:57.8529150Z           "complete": false,
2026-06-21T23:42:57.8529251Z           "evidence": []
2026-06-21T23:42:57.8529328Z         },
2026-06-21T23:42:57.8529413Z         "impl": {
2026-06-21T23:42:57.8529504Z           "complete": false,
2026-06-21T23:42:57.8529590Z           "evidence": []
2026-06-21T23:42:57.8529676Z         },
2026-06-21T23:42:57.8529756Z         "int": {
2026-06-21T23:42:57.8529957Z           "complete": false,
2026-06-21T23:42:57.8530038Z           "evidence": []
2026-06-21T23:42:57.8530123Z         },
2026-06-21T23:42:57.8530210Z         "unit": {
2026-06-21T23:42:57.8530291Z           "complete": false,
2026-06-21T23:42:57.8530377Z           "evidence": []
2026-06-21T23:42:57.8530458Z         }
2026-06-21T23:42:57.8530539Z       }
2026-06-21T23:42:57.8530625Z     },
2026-06-21T23:42:57.8530706Z     {
2026-06-21T23:42:57.8530816Z       "id": "REQ-HAZARD-DRIVEN-BY-SELFHEAL",
2026-06-21T23:42:57.8532361Z       "title": "An spt-hosted endpoint's ONLINE+CONTROLLED state (`driven_by`) must CLEAR even when the detach IPC is lost — do NOT rely on the detach signal (same lesson as REQ-HAZARD-HOSTED-LIVENESS-RECONCILE B2): the reconcile loop clears `driven_by` when the endpoint has no live controller/session. Today a wedged or lost pump never delivers the detach, so the endpoint stays latched CONTROLLED forever. Composes with W1 (the wedge no longer blocks the detach) and rides the same pull-primary reconcile substrate as B2. (v0.13.0)",
2026-06-21T23:42:57.8532567Z       "requiredStages": [
2026-06-21T23:42:57.8532656Z         "impl",
2026-06-21T23:42:57.8532744Z         "unit",
2026-06-21T23:42:57.8532834Z         "int"
2026-06-21T23:42:57.8532915Z       ],
2026-06-21T23:42:57.8533000Z       "stages": {
2026-06-21T23:42:57.8533082Z         "doc": {
2026-06-21T23:42:57.8533177Z           "complete": false,
2026-06-21T23:42:57.8533262Z           "evidence": []
2026-06-21T23:42:57.8533343Z         },
2026-06-21T23:42:57.8533435Z         "impl": {
2026-06-21T23:42:57.8533515Z           "complete": true,
2026-06-21T23:42:57.8533615Z           "evidence": [
2026-06-21T23:42:57.8533702Z             {
2026-06-21T23:42:57.8533834Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:42:57.8533935Z               "line": 538
2026-06-21T23:42:57.8534017Z             },
2026-06-21T23:42:57.8534103Z             {
2026-06-21T23:42:57.8534206Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T23:42:57.8534305Z               "line": 641
2026-06-21T23:42:57.8534382Z             },
2026-06-21T23:42:57.8534467Z             {
2026-06-21T23:42:57.8534608Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-06-21T23:42:57.8534685Z               "line": 21
2026-06-21T23:42:57.8534762Z             }
2026-06-21T23:42:57.8534842Z           ]
2026-06-21T23:42:57.8534927Z         },
2026-06-21T23:42:57.8535010Z         "int": {
2026-06-21T23:42:57.8535095Z           "complete": true,
2026-06-21T23:42:57.8535180Z           "evidence": [
2026-06-21T23:42:57.8535266Z             {
2026-06-21T23:42:57.8535415Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-06-21T23:42:57.8535495Z               "line": 236
2026-06-21T23:42:57.8535581Z             },
2026-06-21T23:42:57.8535668Z             {
2026-06-21T23:42:57.8535805Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-06-21T23:42:57.8535900Z               "line": 396
2026-06-21T23:42:57.8535988Z             },
2026-06-21T23:42:57.8536072Z             {
2026-06-21T23:42:57.8536215Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T23:42:57.8536312Z               "line": 1496
2026-06-21T23:42:57.8536396Z             },
2026-06-21T23:42:57.8536482Z             {
2026-06-21T23:42:57.8536622Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T23:42:57.8536711Z               "line": 1648
2026-06-21T23:42:57.8536797Z             }
2026-06-21T23:42:57.8536884Z           ]
2026-06-21T23:42:57.8536970Z         },
2026-06-21T23:42:57.8537054Z         "unit": {
2026-06-21T23:42:57.8537148Z           "complete": true,
2026-06-21T23:42:57.8537235Z           "evidence": [
2026-06-21T23:42:57.8537322Z             {
2026-06-21T23:42:57.8537430Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:42:57.8537516Z               "line": 887
2026-06-21T23:42:57.8537593Z             }
2026-06-21T23:42:57.8537745Z           ]
2026-06-21T23:42:57.8537826Z         }
2026-06-21T23:42:57.8537913Z       }
2026-06-21T23:42:57.8537989Z     },
2026-06-21T23:42:57.8538069Z     {
2026-06-21T23:42:57.8538189Z       "id": "REQ-HAZARD-DROP-FILE-SINGLE-WRITER",
2026-06-21T23:42:57.8538332Z       "title": "Drop files are daemon-owned single-writer (6.4)",
2026-06-21T23:42:57.8538427Z       "requiredStages": [
2026-06-21T23:42:57.8538514Z         "impl",
2026-06-21T23:42:57.8538599Z         "unit"
2026-06-21T23:42:57.8538685Z       ],
2026-06-21T23:42:57.8538760Z       "stages": {
2026-06-21T23:42:57.8538848Z         "doc": {
2026-06-21T23:42:57.8539028Z           "complete": false,
2026-06-21T23:42:57.8539210Z           "evidence": []
2026-06-21T23:42:57.8539290Z         },
2026-06-21T23:42:57.8539375Z         "impl": {
2026-06-21T23:42:57.8539460Z           "complete": true,
2026-06-21T23:42:57.8539551Z           "evidence": [
2026-06-21T23:42:57.8539630Z             {
2026-06-21T23:42:57.8539758Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T23:42:57.8539840Z               "line": 25
2026-06-21T23:42:57.8539922Z             },
2026-06-21T23:42:57.8540006Z             {
2026-06-21T23:42:57.8540112Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T23:42:57.8540194Z               "line": 26
2026-06-21T23:42:57.8540279Z             },
2026-06-21T23:42:57.8540364Z             {
2026-06-21T23:42:57.8540475Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T23:42:57.8540560Z               "line": 159
2026-06-21T23:42:57.8540641Z             }
2026-06-21T23:42:57.8540717Z           ]
2026-06-21T23:42:57.8540804Z         },
2026-06-21T23:42:57.8540889Z         "int": {
2026-06-21T23:42:57.8540988Z           "complete": false,
2026-06-21T23:42:57.8541081Z           "evidence": []
2026-06-21T23:42:57.8541161Z         },
2026-06-21T23:42:57.8541246Z         "unit": {
2026-06-21T23:42:57.8541342Z           "complete": true,
2026-06-21T23:42:57.8541433Z           "evidence": [
2026-06-21T23:42:57.8541518Z             {
2026-06-21T23:42:57.8541632Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T23:42:57.8541725Z               "line": 188
2026-06-21T23:42:57.8541814Z             },
2026-06-21T23:42:57.8541895Z             {
2026-06-21T23:42:57.8541996Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T23:42:57.8542087Z               "line": 240
2026-06-21T23:42:57.8542171Z             },
2026-06-21T23:42:57.8542256Z             {
2026-06-21T23:42:57.8542366Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T23:42:57.8542451Z               "line": 186
2026-06-21T23:42:57.8542540Z             }
2026-06-21T23:42:57.8542621Z           ]
2026-06-21T23:42:57.8542712Z         }
2026-06-21T23:42:57.8542794Z       }
2026-06-21T23:42:57.8542878Z     },
2026-06-21T23:42:57.8542964Z     {
2026-06-21T23:42:57.8543070Z       "id": "REQ-HAZARD-EBUSY-RENAME",
2026-06-21T23:42:57.8543240Z       "title": "tmp-write + atomic-rename + retry on Windows EBUSY (5.2)",
2026-06-21T23:42:57.8543342Z       "requiredStages": [
2026-06-21T23:42:57.8543432Z         "impl",
2026-06-21T23:42:57.8543512Z         "unit"
2026-06-21T23:42:57.8543584Z       ],
2026-06-21T23:42:57.8543676Z       "stages": {
2026-06-21T23:42:57.8543756Z         "doc": {
2026-06-21T23:42:57.8543856Z           "complete": false,
2026-06-21T23:42:57.8543938Z           "evidence": []
2026-06-21T23:42:57.8544029Z         },
2026-06-21T23:42:57.8544113Z         "impl": {
2026-06-21T23:42:57.8544204Z           "complete": true,
2026-06-21T23:42:57.8544300Z           "evidence": [
2026-06-21T23:42:57.8544390Z             {
2026-06-21T23:42:57.8544504Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T23:42:57.8544596Z               "line": 48
2026-06-21T23:42:57.8544687Z             },
2026-06-21T23:42:57.8544770Z             {
2026-06-21T23:42:57.8544875Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T23:42:57.8544971Z               "line": 55
2026-06-21T23:42:57.8545178Z             },
2026-06-21T23:42:57.8545259Z             {
2026-06-21T23:42:57.8545370Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T23:42:57.8545454Z               "line": 74
2026-06-21T23:42:57.8545541Z             },
2026-06-21T23:42:57.8545622Z             {
2026-06-21T23:42:57.8545740Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T23:42:57.8545826Z               "line": 91
2026-06-21T23:42:57.8545909Z             }
2026-06-21T23:42:57.8545989Z           ]
2026-06-21T23:42:57.8546084Z         },
2026-06-21T23:42:57.8546166Z         "int": {
2026-06-21T23:42:57.8546266Z           "complete": false,
2026-06-21T23:42:57.8546442Z           "evidence": []
2026-06-21T23:42:57.8546529Z         },
2026-06-21T23:42:57.8546618Z         "unit": {
2026-06-21T23:42:57.8546708Z           "complete": true,
2026-06-21T23:42:57.8546805Z           "evidence": [
2026-06-21T23:42:57.8546887Z             {
2026-06-21T23:42:57.8546985Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T23:42:57.8547076Z               "line": 149
2026-06-21T23:42:57.8547163Z             },
2026-06-21T23:42:57.8547248Z             {
2026-06-21T23:42:57.8547352Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T23:42:57.8547445Z               "line": 166
2026-06-21T23:42:57.8547526Z             },
2026-06-21T23:42:57.8547614Z             {
2026-06-21T23:42:57.8547737Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T23:42:57.8547824Z               "line": 176
2026-06-21T23:42:57.8547906Z             },
2026-06-21T23:42:57.8547990Z             {
2026-06-21T23:42:57.8548096Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T23:42:57.8548191Z               "line": 194
2026-06-21T23:42:57.8548281Z             },
2026-06-21T23:42:57.8548357Z             {
2026-06-21T23:42:57.8548464Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T23:42:57.8548559Z               "line": 207
2026-06-21T23:42:57.8548639Z             }
2026-06-21T23:42:57.8548720Z           ]
2026-06-21T23:42:57.8548802Z         }
2026-06-21T23:42:57.8548887Z       }
2026-06-21T23:42:57.8549059Z     },
2026-06-21T23:42:57.8549150Z     {
2026-06-21T23:42:57.8549268Z       "id": "REQ-HAZARD-ECHO-BEFORE-SIGNOFF",
2026-06-21T23:42:57.8549455Z       "title": "Echo-commune fires before INIT_SIGNOFF on orphan teardown (3.3)",
2026-06-21T23:42:57.8549554Z       "requiredStages": [
2026-06-21T23:42:57.8549636Z         "impl",
2026-06-21T23:42:57.8549718Z         "unit"
2026-06-21T23:42:57.8549808Z       ],
2026-06-21T23:42:57.8549892Z       "stages": {
2026-06-21T23:42:57.8549973Z         "doc": {
2026-06-21T23:42:57.8550069Z           "complete": false,
2026-06-21T23:42:57.8550162Z           "evidence": []
2026-06-21T23:42:57.8550242Z         },
2026-06-21T23:42:57.8550328Z         "impl": {
2026-06-21T23:42:57.8550429Z           "complete": true,
2026-06-21T23:42:57.8550500Z           "evidence": [
2026-06-21T23:42:57.8550581Z             {
2026-06-21T23:42:57.8550706Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T23:42:57.8550796Z               "line": 466
2026-06-21T23:42:57.8550886Z             },
2026-06-21T23:42:57.8550963Z             {
2026-06-21T23:42:57.8551082Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T23:42:57.8551158Z               "line": 26
2026-06-21T23:42:57.8551248Z             }
2026-06-21T23:42:57.8551321Z           ]
2026-06-21T23:42:57.8551411Z         },
2026-06-21T23:42:57.8551497Z         "int": {
2026-06-21T23:42:57.8551587Z           "complete": false,
2026-06-21T23:42:57.8551683Z           "evidence": []
2026-06-21T23:42:57.8551769Z         },
2026-06-21T23:42:57.8551859Z         "unit": {
2026-06-21T23:42:57.8551941Z           "complete": true,
2026-06-21T23:42:57.8552026Z           "evidence": [
2026-06-21T23:42:57.8552111Z             {
2026-06-21T23:42:57.8552217Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T23:42:57.8552304Z               "line": 150
2026-06-21T23:42:57.8552489Z             },
2026-06-21T23:42:57.8552575Z             {
2026-06-21T23:42:57.8552684Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T23:42:57.8552774Z               "line": 208
2026-06-21T23:42:57.8552859Z             }
2026-06-21T23:42:57.8552945Z           ]
2026-06-21T23:42:57.8553029Z         }
2026-06-21T23:42:57.8553110Z       }
2026-06-21T23:42:57.8553200Z     },
2026-06-21T23:42:57.8553287Z     {
2026-06-21T23:42:57.8553410Z       "id": "REQ-HAZARD-EFFECT-JOURNAL-PTY-WEDGE",
2026-06-21T23:42:57.8562572Z       "title": "The effect journal serializes EVERY PTY effect under one mutex held ACROSS two fsyncs AND the blocking PTY write — so interactive input stutters and ultimately wedges the daemon hard. ROOT (doyle /diagnose, code-grounded + MEASURED on the operator's real Windows box, 2026-06-19): EffectJournal::apply_once (effect.rs:168-188) takes `inner.lock()` and holds it across `write_line(PENDING)` → `effect()` → `write_line(DONE)`, where write_line (effect.rs:235-239) does flush()+sync_all() (a full FlushFileBuffers) — so each effect pays TWO fsyncs under a GLOBAL lock, and the closure `effect()` (the actual PTY write, broker.rs:1257 EffectKind::PtyWrite via attach.rs:197 send_effect) runs while the lock is held. Two operator-visible facets, ONE root: (A) STUTTER/LAG — every keystroke is a PtyWrite effect = 2× sync_all serialized; measured fsync on %LOCALAPPDATA%\\spt-core = median 6.5ms, spikes to 198ms (C: was recently at 100%), so ~13ms+ per keystroke best case, hundreds under contention → 'many but not all keypresses take 100s of ms, choppy, worsens with volume'. (B) HARD PERMANENT WEDGE — when a PtyWrite `effect()` blocks (ConPTY input buffer full / harness not draining stdin), the journal lock is held INDEFINITELY → the single-threaded inbound-stream dispatch (dispatch.rs serve_attach, which both applies input effects AND opens attaches) can never progress → EVERY subsequent attach (`spt rc --view`/`--take`) fails with 'attach request: brain IPC read deadline elapsed' (confirmed: two retries deadline identically; broker control-plane KIND queries still answer — different thread). This REFUTES the W2-deferred ruling that park-(b)/(c) is 'Windows-benign because ConPTY absorbs 4MiB' — on the real box the input path wedges regardless. DISTINCT from W1 (REQ-HAZARD-INJECT-CONTROL-COEXIST = the OUTPUT drain, correctly fixed @8b5583e; output uses broker.rs:1106 append, NOT the fsync journal). This is the INPUT/effect-journal path W1 never touched, and it is THE wedge the operator hits with --take/--view. FIX DIRECTION (candidates, repro-first — extend inject_control_wedge.rs to a REAL backed-up-PTY-consumer + a real rc-client attach assertion, the gap W1's gate missed): (1) do NOT hold the journal lock across effect() — reserve the key + fsync PENDING under lock, RELEASE, run effect(), re-acquire to fsync DONE + mark applied (preserve crash-idempotency via the per-key reservation, not a global hold); (2) bound/fail-fast the PtyWrite itself (the W2-deferred park bound — write_input must never block indefinitely, DSR-answer must not hold the writer mutex across a blocking write); (3) drop per-keystroke fsync on the interactive path — PtyWrite effects are EPHEMERAL (a keystroke lost on a broker crash is retyped; PTY state is not reconstructed from keystroke replay), so in-memory applied-set dedup suffices (the broker survives the brain — that IS the dedup anchor), with async/batched fsync or no-fsync for EffectKind::PtyWrite while durable kinds (NetSend/NetDial/Registry/Spool) keep their fsync. Combine (1)+(3) at minimum. Add a KNOWN-HAZARDS.md entry on landing. (v0.13.0)",
2026-06-21T23:42:57.8562826Z       "requiredStages": [
2026-06-21T23:42:57.8562925Z         "impl",
2026-06-21T23:42:57.8563010Z         "unit",
2026-06-21T23:42:57.8563087Z         "int"
2026-06-21T23:42:57.8563174Z       ],
2026-06-21T23:42:57.8563263Z       "stages": {
2026-06-21T23:42:57.8563348Z         "doc": {
2026-06-21T23:42:57.8563434Z           "complete": false,
2026-06-21T23:42:57.8563622Z           "evidence": []
2026-06-21T23:42:57.8563712Z         },
2026-06-21T23:42:57.8563804Z         "impl": {
2026-06-21T23:42:57.8563895Z           "complete": true,
2026-06-21T23:42:57.8563975Z           "evidence": [
2026-06-21T23:42:57.8564065Z             {
2026-06-21T23:42:57.8564176Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T23:42:57.8564261Z               "line": 99
2026-06-21T23:42:57.8564342Z             },
2026-06-21T23:42:57.8564424Z             {
2026-06-21T23:42:57.8564548Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T23:42:57.8564628Z               "line": 201
2026-06-21T23:42:57.8564714Z             }
2026-06-21T23:42:57.8564872Z           ]
2026-06-21T23:42:57.8564957Z         },
2026-06-21T23:42:57.8565039Z         "int": {
2026-06-21T23:42:57.8565134Z           "complete": true,
2026-06-21T23:42:57.8565229Z           "evidence": [
2026-06-21T23:42:57.8565305Z             {
2026-06-21T23:42:57.8565459Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T23:42:57.8565539Z               "line": 737
2026-06-21T23:42:57.8565615Z             }
2026-06-21T23:42:57.8565702Z           ]
2026-06-21T23:42:57.8565793Z         },
2026-06-21T23:42:57.8565882Z         "unit": {
2026-06-21T23:42:57.8565972Z           "complete": true,
2026-06-21T23:42:57.8566067Z           "evidence": [
2026-06-21T23:42:57.8566152Z             {
2026-06-21T23:42:57.8566274Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T23:42:57.8566366Z               "line": 517
2026-06-21T23:42:57.8566452Z             },
2026-06-21T23:42:57.8566542Z             {
2026-06-21T23:42:57.8566646Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T23:42:57.8566738Z               "line": 576
2026-06-21T23:42:57.8566828Z             }
2026-06-21T23:42:57.8566913Z           ]
2026-06-21T23:42:57.8566996Z         }
2026-06-21T23:42:57.8567086Z       }
2026-06-21T23:42:57.8567167Z     },
2026-06-21T23:42:57.8567247Z     {
2026-06-21T23:42:57.8567377Z       "id": "REQ-HAZARD-ELEVATED-DAEMON-SPAWN",
2026-06-21T23:42:57.8568665Z       "title": "The daemon always runs unelevated in the invoking user's universe, regardless of which command spawns it: an elevated spawner de-elevates (Windows: UAC linked token via CreateProcessWithTokenW; Linux: drop to SUDO_UID/SUDO_GID + the invoker's HOME) — an elevated daemon's pipes deny unelevated clients (every later spt reads not-running→spawn→bind Access-denied) and a sudo'd daemon roots the user's state universe (5.7)",
2026-06-21T23:42:57.8568763Z       "requiredStages": [
2026-06-21T23:42:57.8568848Z         "doc",
2026-06-21T23:42:57.8569017Z         "impl",
2026-06-21T23:42:57.8569110Z         "unit"
2026-06-21T23:42:57.8569196Z       ],
2026-06-21T23:42:57.8569284Z       "stages": {
2026-06-21T23:42:57.8569369Z         "doc": {
2026-06-21T23:42:57.8569454Z           "complete": true,
2026-06-21T23:42:57.8569541Z           "evidence": [
2026-06-21T23:42:57.8569622Z             {
2026-06-21T23:42:57.8569740Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T23:42:57.8569826Z               "line": 214
2026-06-21T23:42:57.8569918Z             }
2026-06-21T23:42:57.8569997Z           ]
2026-06-21T23:42:57.8570083Z         },
2026-06-21T23:42:57.8570175Z         "impl": {
2026-06-21T23:42:57.8570261Z           "complete": true,
2026-06-21T23:42:57.8570361Z           "evidence": [
2026-06-21T23:42:57.8570446Z             {
2026-06-21T23:42:57.8570566Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:42:57.8570665Z               "line": 56
2026-06-21T23:42:57.8570736Z             },
2026-06-21T23:42:57.8570819Z             {
2026-06-21T23:42:57.8570937Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:42:57.8571032Z               "line": 580
2026-06-21T23:42:57.8571112Z             },
2026-06-21T23:42:57.8571194Z             {
2026-06-21T23:42:57.8571310Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T23:42:57.8571400Z               "line": 36
2026-06-21T23:42:57.8571588Z             },
2026-06-21T23:42:57.8571677Z             {
2026-06-21T23:42:57.8571802Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T23:42:57.8571883Z               "line": 59
2026-06-21T23:42:57.8571973Z             },
2026-06-21T23:42:57.8572049Z             {
2026-06-21T23:42:57.8572169Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T23:42:57.8572260Z               "line": 83
2026-06-21T23:42:57.8572345Z             },
2026-06-21T23:42:57.8572432Z             {
2026-06-21T23:42:57.8572546Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T23:42:57.8572635Z               "line": 140
2026-06-21T23:42:57.8572827Z             },
2026-06-21T23:42:57.8572908Z             {
2026-06-21T23:42:57.8573032Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T23:42:57.8573119Z               "line": 159
2026-06-21T23:42:57.8573212Z             },
2026-06-21T23:42:57.8573294Z             {
2026-06-21T23:42:57.8573420Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T23:42:57.8573508Z               "line": 384
2026-06-21T23:42:57.8573590Z             },
2026-06-21T23:42:57.8573667Z             {
2026-06-21T23:42:57.8573781Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T23:42:57.8573875Z               "line": 535
2026-06-21T23:42:57.8573960Z             },
2026-06-21T23:42:57.8574042Z             {
2026-06-21T23:42:57.8574168Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T23:42:57.8574249Z               "line": 581
2026-06-21T23:42:57.8574335Z             },
2026-06-21T23:42:57.8574421Z             {
2026-06-21T23:42:57.8574544Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T23:42:57.8574645Z               "line": 300
2026-06-21T23:42:57.8574726Z             },
2026-06-21T23:42:57.8574812Z             {
2026-06-21T23:42:57.8574916Z               "path": "crates/spt/src/main.rs",
2026-06-21T23:42:57.8575004Z               "line": 42
2026-06-21T23:42:57.8575084Z             }
2026-06-21T23:42:57.8575169Z           ]
2026-06-21T23:42:57.8575260Z         },
2026-06-21T23:42:57.8575342Z         "int": {
2026-06-21T23:42:57.8575441Z           "complete": false,
2026-06-21T23:42:57.8575527Z           "evidence": []
2026-06-21T23:42:57.8575608Z         },
2026-06-21T23:42:57.8575699Z         "unit": {
2026-06-21T23:42:57.8575794Z           "complete": true,
2026-06-21T23:42:57.8575875Z           "evidence": [
2026-06-21T23:42:57.8575967Z             {
2026-06-21T23:42:57.8576089Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T23:42:57.8576176Z               "line": 813
2026-06-21T23:42:57.8576262Z             },
2026-06-21T23:42:57.8576348Z             {
2026-06-21T23:42:57.8576475Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T23:42:57.8576565Z               "line": 854
2026-06-21T23:42:57.8576651Z             },
2026-06-21T23:42:57.8576740Z             {
2026-06-21T23:42:57.8576858Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T23:42:57.8576945Z               "line": 928
2026-06-21T23:42:57.8577017Z             }
2026-06-21T23:42:57.8577102Z           ]
2026-06-21T23:42:57.8577188Z         }
2026-06-21T23:42:57.8577269Z       }
2026-06-21T23:42:57.8577350Z     },
2026-06-21T23:42:57.8577431Z     {
2026-06-21T23:42:57.8577556Z       "id": "REQ-HAZARD-ENDPOINT-RUN-ATTACH-OUTPUT",
2026-06-21T23:42:57.8582590Z       "title": "A clean `spt rc` attach to a LIVE spt-hosted (`endpoint run`) harness must DELIVER the harness's PTY output. KEYSTONE — the operator's central 'attach shows no output' symptom, reproduced on the real dummy-harness fixture (v0.12.1 Wave 1) with NO death and NO wedge: bringup succeeds (online, harness pid alive + heartbeating, psyche hosted), the attach CONNECTS (PUMP_IPC_READER spawned, no RC_FAIL, holds the full window) — but receives EXACTLY 0 bytes over 10s of the harness's flushed [session.self] stdout. DISTINCT from REQ-HAZARD-VIEWER-CLOSE-DETACH (death) and REQ-HAZARD-ATTACH-WEDGE (dead-child backpressure): here the harness is ALIVE and the attach is a clean first subscribe. This BLOCKS the 'view is independent' invariant — re-attach is meaningless if a live endpoint-run harness shows nothing. KNOWN-GOOD (rules out 'no drain'): attach.rs `local_attach_via_loopback_conn_rides_the_same_pump` + `broker_spawns_the_pty_child_in_the_requested_cwd` prove the broker DOES drain+fan a `spawn_session` PTY child to a loopback attach over the SAME transport rc uses. Both spawn_session and endpoint-run's spawn_session_pid send KIND_SPAWN → the same dispatch_spawn (broker.rs:706/835) which starts the per-session drain+OutputLog — so the gap is NARROWER than 'no drain', endpoint-run-specific. Root candidates: (a) spawn_session_pid's SpawnReq stdio/env/cwd differs so the dummy's stdout isn't the captured ConPTY; (b) the harness stdout WRITE BLOCKS because the ConPTY buffer fills (drain not reading THIS pty) — explains alive-but-0-bytes; (c) ConPTY reader-park (KH 7.6) on this path; (d) `spt rc` resolve_session/subscribe for an endpoint-run session subscribes to the wrong/empty log. (v0.12.1)",
2026-06-21T23:42:57.8582943Z       "requiredStages": [
2026-06-21T23:42:57.8583021Z         "impl",
2026-06-21T23:42:57.8583106Z         "unit",
2026-06-21T23:42:57.8583181Z         "int"
2026-06-21T23:42:57.8583262Z       ],
2026-06-21T23:42:57.8583350Z       "stages": {
2026-06-21T23:42:57.8583429Z         "doc": {
2026-06-21T23:42:57.8583520Z           "complete": false,
2026-06-21T23:42:57.8583607Z           "evidence": []
2026-06-21T23:42:57.8583703Z         },
2026-06-21T23:42:57.8583787Z         "impl": {
2026-06-21T23:42:57.8583878Z           "complete": true,
2026-06-21T23:42:57.8583970Z           "evidence": [
2026-06-21T23:42:57.8584045Z             {
2026-06-21T23:42:57.8584174Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T23:42:57.8584251Z               "line": 204
2026-06-21T23:42:57.8584342Z             }
2026-06-21T23:42:57.8584430Z           ]
2026-06-21T23:42:57.8584515Z         },
2026-06-21T23:42:57.8584606Z         "int": {
2026-06-21T23:42:57.8584691Z           "complete": true,
2026-06-21T23:42:57.8584781Z           "evidence": [
2026-06-21T23:42:57.8584866Z             {
2026-06-21T23:42:57.8584991Z               "path": "crates/spt/tests/dummy_harness_e2e.rs",
2026-06-21T23:42:57.8585071Z               "line": 296
2026-06-21T23:42:57.8585162Z             }
2026-06-21T23:42:57.8585249Z           ]
2026-06-21T23:42:57.8585334Z         },
2026-06-21T23:42:57.8585414Z         "unit": {
2026-06-21T23:42:57.8585500Z           "complete": true,
2026-06-21T23:42:57.8585592Z           "evidence": [
2026-06-21T23:42:57.8585673Z             {
2026-06-21T23:42:57.8585801Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T23:42:57.8585893Z               "line": 467
2026-06-21T23:42:57.8585977Z             }
2026-06-21T23:42:57.8586068Z           ]
2026-06-21T23:42:57.8586154Z         }
2026-06-21T23:42:57.8586245Z       }
2026-06-21T23:42:57.8586335Z     },
2026-06-21T23:42:57.8586421Z     {
2026-06-21T23:42:57.8586527Z       "id": "REQ-HAZARD-ENV-SUBST",
2026-06-21T23:42:57.8589964Z       "title": "`spt endpoint run` HONORS manifest [env.<VAR>] direction=inject values (with {key} substitution) on the spt-hosted spawn. Today only the [session.self] command ARGV is {id}-substituted; the [env] inject value is NEITHER substituted NOR applied — manifest.schema.json promises EnvVar.value = 'Value to inject (with substitution)' but prepare_harness_spawn fills only argv and SpawnReq carries no env, so a [env.SPT_ENDPOINT_ID].value='{id}' arrives EMPTY. A FLAGLESS harness (bare `claude`, no argv slot for {id}) then routes the id via [env] → empty → SessionStart sees empty $SPT_ENDPOINT_ID → seeds-by-PPID instead of binding → ZERO perch → NO_PERCH (the actual wall-b bind blocker; perri hard-repro'd). SILENT failure (empty inject, no error). FIX (doyle ruled a): fill every [env] inject value from the SAME {key} catalog as argv/role (mirror F-009 TEMPLATE fill, whole-string fill_template for an env value), thread it through SpawnReq.env → the broker sets it on the spawned PTY child. Correctness fix — schema already promises it, NO manifest change, NO new binary. PAIRS with REQ-SEND-SPT-HOSTED to make endpoint run fully work. doyle F-013. (post-v0.10.0)",
2026-06-21T23:42:57.8590198Z       "requiredStages": [
2026-06-21T23:42:57.8590293Z         "impl",
2026-06-21T23:42:57.8590375Z         "unit",
2026-06-21T23:42:57.8590465Z         "int"
2026-06-21T23:42:57.8590555Z       ],
2026-06-21T23:42:57.8590641Z       "stages": {
2026-06-21T23:42:57.8590718Z         "doc": {
2026-06-21T23:42:57.8590814Z           "complete": false,
2026-06-21T23:42:57.8591009Z           "evidence": []
2026-06-21T23:42:57.8591095Z         },
2026-06-21T23:42:57.8591175Z         "impl": {
2026-06-21T23:42:57.8591271Z           "complete": true,
2026-06-21T23:42:57.8591367Z           "evidence": [
2026-06-21T23:42:57.8591447Z             {
2026-06-21T23:42:57.8591576Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T23:42:57.8591677Z               "line": 123
2026-06-21T23:42:57.8591762Z             },
2026-06-21T23:42:57.8594638Z             {
2026-06-21T23:42:57.8594797Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T23:42:57.8594883Z               "line": 134
2026-06-21T23:42:57.8594972Z             }
2026-06-21T23:42:57.8595062Z           ]
2026-06-21T23:42:57.8595148Z         },
2026-06-21T23:42:57.8595224Z         "int": {
2026-06-21T23:42:57.8595321Z           "complete": true,
2026-06-21T23:42:57.8595412Z           "evidence": [
2026-06-21T23:42:57.8595493Z             {
2026-06-21T23:42:57.8595627Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T23:42:57.8595722Z               "line": 312
2026-06-21T23:42:57.8595804Z             },
2026-06-21T23:42:57.8595884Z             {
2026-06-21T23:42:57.8596013Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T23:42:57.8596114Z               "line": 525
2026-06-21T23:42:57.8596199Z             }
2026-06-21T23:42:57.8596285Z           ]
2026-06-21T23:42:57.8596370Z         },
2026-06-21T23:42:57.8596457Z         "unit": {
2026-06-21T23:42:57.8596542Z           "complete": true,
2026-06-21T23:42:57.8596628Z           "evidence": [
2026-06-21T23:42:57.8596714Z             {
2026-06-21T23:42:57.8596848Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T23:42:57.8596938Z               "line": 250
2026-06-21T23:42:57.8597019Z             }
2026-06-21T23:42:57.8597106Z           ]
2026-06-21T23:42:57.8597190Z         }
2026-06-21T23:42:57.8597262Z       }
2026-06-21T23:42:57.8597354Z     },
2026-06-21T23:42:57.8597440Z     {
2026-06-21T23:42:57.8597562Z       "id": "REQ-HAZARD-ENVELOPE-CR-LINESAFE",
2026-06-21T23:42:57.8599433Z       "title": "Envelope CR-linesafety (4.1): the line-framed EVENT codec must neutralize raw carriage returns — `event_body_escape` folds CRLF/lone-CR to the codec's representable linebreak (`\\n`→`<br>`) BEFORE framing, so a body carrying `\\r` (Windows `echo`/CRLF text crossing nodes) cannot survive into the single-line envelope and trigger a receiver terminal CR→col0 overwrite that corrupts the frame. Robustness on unrepresentable input, NOT a wire-format change (decoder untouched, amp-last invariant held). Belt-and-suspenders: `spt send`/`ring` also trim stdin (parity with `notify`).",
2026-06-21T23:42:57.8599548Z       "requiredStages": [
2026-06-21T23:42:57.8599640Z         "impl",
2026-06-21T23:42:57.8599719Z         "unit"
2026-06-21T23:42:57.8599805Z       ],
2026-06-21T23:42:57.8599886Z       "stages": {
2026-06-21T23:42:57.8599979Z         "doc": {
2026-06-21T23:42:57.8600081Z           "complete": false,
2026-06-21T23:42:57.8600163Z           "evidence": []
2026-06-21T23:42:57.8600245Z         },
2026-06-21T23:42:57.8600326Z         "impl": {
2026-06-21T23:42:57.8600419Z           "complete": true,
2026-06-21T23:42:57.8600504Z           "evidence": [
2026-06-21T23:42:57.8600591Z             {
2026-06-21T23:42:57.8600867Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T23:42:57.8600944Z               "line": 31
2026-06-21T23:42:57.8601025Z             }
2026-06-21T23:42:57.8601106Z           ]
2026-06-21T23:42:57.8601201Z         },
2026-06-21T23:42:57.8601278Z         "int": {
2026-06-21T23:42:57.8601378Z           "complete": false,
2026-06-21T23:42:57.8601468Z           "evidence": []
2026-06-21T23:42:57.8601550Z         },
2026-06-21T23:42:57.8601636Z         "unit": {
2026-06-21T23:42:57.8601721Z           "complete": true,
2026-06-21T23:42:57.8601802Z           "evidence": [
2026-06-21T23:42:57.8601880Z             {
2026-06-21T23:42:57.8602098Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T23:42:57.8602195Z               "line": 181
2026-06-21T23:42:57.8602270Z             }
2026-06-21T23:42:57.8602355Z           ]
2026-06-21T23:42:57.8602431Z         }
2026-06-21T23:42:57.8602519Z       }
2026-06-21T23:42:57.8602599Z     },
2026-06-21T23:42:57.8602693Z     {
2026-06-21T23:42:57.8602817Z       "id": "REQ-HAZARD-ENVELOPE-DECODE-ORDER",
2026-06-21T23:42:57.8602977Z       "title": "Envelope decode order, ampersand decoded last (4.1)",
2026-06-21T23:42:57.8603071Z       "requiredStages": [
2026-06-21T23:42:57.8603158Z         "impl",
2026-06-21T23:42:57.8603235Z         "unit"
2026-06-21T23:42:57.8603325Z       ],
2026-06-21T23:42:57.8603410Z       "stages": {
2026-06-21T23:42:57.8603492Z         "doc": {
2026-06-21T23:42:57.8603587Z           "complete": false,
2026-06-21T23:42:57.8603682Z           "evidence": []
2026-06-21T23:42:57.8603763Z         },
2026-06-21T23:42:57.8603855Z         "impl": {
2026-06-21T23:42:57.8603949Z           "complete": true,
2026-06-21T23:42:57.8604034Z           "evidence": [
2026-06-21T23:42:57.8604122Z             {
2026-06-21T23:42:57.8604245Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T23:42:57.8604339Z               "line": 49
2026-06-21T23:42:57.8604422Z             },
2026-06-21T23:42:57.8604512Z             {
2026-06-21T23:42:57.8604617Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T23:42:57.8604708Z               "line": 81
2026-06-21T23:42:57.8604789Z             }
2026-06-21T23:42:57.8604870Z           ]
2026-06-21T23:42:57.8604955Z         },
2026-06-21T23:42:57.8605037Z         "int": {
2026-06-21T23:42:57.8605142Z           "complete": false,
2026-06-21T23:42:57.8605226Z           "evidence": []
2026-06-21T23:42:57.8605313Z         },
2026-06-21T23:42:57.8605395Z         "unit": {
2026-06-21T23:42:57.8605481Z           "complete": true,
2026-06-21T23:42:57.8605565Z           "evidence": [
2026-06-21T23:42:57.8605655Z             {
2026-06-21T23:42:57.8605774Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T23:42:57.8605863Z               "line": 156
2026-06-21T23:42:57.8605943Z             },
2026-06-21T23:42:57.8606025Z             {
2026-06-21T23:42:57.8606140Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T23:42:57.8606234Z               "line": 173
2026-06-21T23:42:57.8606320Z             },
2026-06-21T23:42:57.8606407Z             {
2026-06-21T23:42:57.8606521Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T23:42:57.8606611Z               "line": 196
2026-06-21T23:42:57.8606698Z             }
2026-06-21T23:42:57.8606778Z           ]
2026-06-21T23:42:57.8606855Z         }
2026-06-21T23:42:57.8606931Z       }
2026-06-21T23:42:57.8607008Z     },
2026-06-21T23:42:57.8607093Z     {
2026-06-21T23:42:57.8607221Z       "id": "REQ-HAZARD-ENVELOPE-PARSER-SAFE",
2026-06-21T23:42:57.8607394Z       "title": "Two-slice envelope parser is panic-free and tolerant (4.2)",
2026-06-21T23:42:57.8607494Z       "requiredStages": [
2026-06-21T23:42:57.8607579Z         "impl",
2026-06-21T23:42:57.8607661Z         "unit"
2026-06-21T23:42:57.8607737Z       ],
2026-06-21T23:42:57.8607823Z       "stages": {
2026-06-21T23:42:57.8607904Z         "doc": {
2026-06-21T23:42:57.8608000Z           "complete": false,
2026-06-21T23:42:57.8608160Z           "evidence": []
2026-06-21T23:42:57.8608246Z         },
2026-06-21T23:42:57.8608332Z         "impl": {
2026-06-21T23:42:57.8608425Z           "complete": true,
2026-06-21T23:42:57.8608506Z           "evidence": [
2026-06-21T23:42:57.8608591Z             {
2026-06-21T23:42:57.8608712Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T23:42:57.8608796Z               "line": 120
2026-06-21T23:42:57.8608878Z             }
2026-06-21T23:42:57.8609041Z           ]
2026-06-21T23:42:57.8609125Z         },
2026-06-21T23:42:57.8609212Z         "int": {
2026-06-21T23:42:57.8609302Z           "complete": false,
2026-06-21T23:42:57.8609397Z           "evidence": []
2026-06-21T23:42:57.8609589Z         },
2026-06-21T23:42:57.8609679Z         "unit": {
2026-06-21T23:42:57.8609759Z           "complete": true,
2026-06-21T23:42:57.8609851Z           "evidence": [
2026-06-21T23:42:57.8609932Z             {
2026-06-21T23:42:57.8610046Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T23:42:57.8610136Z               "line": 212
2026-06-21T23:42:57.8610224Z             },
2026-06-21T23:42:57.8610303Z             {
2026-06-21T23:42:57.8610418Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T23:42:57.8610500Z               "line": 221
2026-06-21T23:42:57.8610581Z             },
2026-06-21T23:42:57.8610670Z             {
2026-06-21T23:42:57.8610781Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T23:42:57.8610863Z               "line": 229
2026-06-21T23:42:57.8610947Z             },
2026-06-21T23:42:57.8611027Z             {
2026-06-21T23:42:57.8611141Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T23:42:57.8611223Z               "line": 239
2026-06-21T23:42:57.8611313Z             },
2026-06-21T23:42:57.8611403Z             {
2026-06-21T23:42:57.8611519Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-21T23:42:57.8611600Z               "line": 249
2026-06-21T23:42:57.8611685Z             }
2026-06-21T23:42:57.8611771Z           ]
2026-06-21T23:42:57.8611857Z         }
2026-06-21T23:42:57.8611948Z       }
2026-06-21T23:42:57.8612033Z     },
2026-06-21T23:42:57.8612115Z     {
2026-06-21T23:42:57.8612220Z       "id": "REQ-HAZARD-EPHEMERAL-CLEANUP",
2026-06-21T23:42:57.8612381Z       "title": "Ephemeral perch cleanup on every ring exit path (3.1)",
2026-06-21T23:42:57.8612477Z       "requiredStages": [
2026-06-21T23:42:57.8612548Z         "impl",
2026-06-21T23:42:57.8612639Z         "unit"
2026-06-21T23:42:57.8612725Z       ],
2026-06-21T23:42:57.8612806Z       "stages": {
2026-06-21T23:42:57.8612896Z         "doc": {
2026-06-21T23:42:57.8612992Z           "complete": false,
2026-06-21T23:42:57.8613089Z           "evidence": []
2026-06-21T23:42:57.8613159Z         },
2026-06-21T23:42:57.8613244Z         "impl": {
2026-06-21T23:42:57.8613338Z           "complete": true,
2026-06-21T23:42:57.8613425Z           "evidence": [
2026-06-21T23:42:57.8613509Z             {
2026-06-21T23:42:57.8613613Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T23:42:57.8613708Z               "line": 14
2026-06-21T23:42:57.8613795Z             },
2026-06-21T23:42:57.8613880Z             {
2026-06-21T23:42:57.8613990Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T23:42:57.8614066Z               "line": 63
2026-06-21T23:42:57.8614147Z             }
2026-06-21T23:42:57.8614233Z           ]
2026-06-21T23:42:57.8614319Z         },
2026-06-21T23:42:57.8614400Z         "int": {
2026-06-21T23:42:57.8614500Z           "complete": false,
2026-06-21T23:42:57.8614590Z           "evidence": []
2026-06-21T23:42:57.8614678Z         },
2026-06-21T23:42:57.8614763Z         "unit": {
2026-06-21T23:42:57.8614858Z           "complete": true,
2026-06-21T23:42:57.8614948Z           "evidence": [
2026-06-21T23:42:57.8615030Z             {
2026-06-21T23:42:57.8615129Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T23:42:57.8615215Z               "line": 164
2026-06-21T23:42:57.8615292Z             },
2026-06-21T23:42:57.8615472Z             {
2026-06-21T23:42:57.8615573Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T23:42:57.8615664Z               "line": 198
2026-06-21T23:42:57.8615749Z             },
2026-06-21T23:42:57.8615835Z             {
2026-06-21T23:42:57.8615936Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T23:42:57.8616017Z               "line": 220
2026-06-21T23:42:57.8616102Z             }
2026-06-21T23:42:57.8616182Z           ]
2026-06-21T23:42:57.8616268Z         }
2026-06-21T23:42:57.8616348Z       }
2026-06-21T23:42:57.8616428Z     },
2026-06-21T23:42:57.8616518Z     {
2026-06-21T23:42:57.8616618Z       "id": "REQ-HAZARD-EPOCH-RESET",
2026-06-21T23:42:57.8618015Z       "title": "Advertisement-epoch reset strands a node: peers' higher last-seen epoch drops the reset node's fresh advertisements as Stale until the counter outruns history. Common case (full reinstall/re-pair) is mitigated by REQ-SUBNET-7's ceremony eviction (peer-side epoch memory dies with the deleted row — acceptance-verified); the residual narrow slice (epoch file lost, identity kept) is documented, guard deferred to a field hit (4.11)",
2026-06-21T23:42:57.8618130Z       "requiredStages": [],
2026-06-21T23:42:57.8618212Z       "stages": {
2026-06-21T23:42:57.8618297Z         "doc": {
2026-06-21T23:42:57.8618383Z           "complete": true,
2026-06-21T23:42:57.8618469Z           "evidence": [
2026-06-21T23:42:57.8618551Z             {
2026-06-21T23:42:57.8618659Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T23:42:57.8618749Z               "line": 165
2026-06-21T23:42:57.8618835Z             }
2026-06-21T23:42:57.8618911Z           ]
2026-06-21T23:42:57.8619075Z         },
2026-06-21T23:42:57.8619166Z         "impl": {
2026-06-21T23:42:57.8619248Z           "complete": false,
2026-06-21T23:42:57.8619342Z           "evidence": []
2026-06-21T23:42:57.8619423Z         },
2026-06-21T23:42:57.8619506Z         "int": {
2026-06-21T23:42:57.8619610Z           "complete": false,
2026-06-21T23:42:57.8619695Z           "evidence": []
2026-06-21T23:42:57.8619782Z         },
2026-06-21T23:42:57.8619863Z         "unit": {
2026-06-21T23:42:57.8619949Z           "complete": false,
2026-06-21T23:42:57.8620033Z           "evidence": []
2026-06-21T23:42:57.8620116Z         }
2026-06-21T23:42:57.8620201Z       }
2026-06-21T23:42:57.8620287Z     },
2026-06-21T23:42:57.8620372Z     {
2026-06-21T23:42:57.8620483Z       "id": "REQ-HAZARD-EVENTPART-REASSEMBLY",
2026-06-21T23:42:57.8620697Z       "title": "EVENT-PART split/reassembly is byte-exact; orphan parts dropped silently",
2026-06-21T23:42:57.8620798Z       "requiredStages": [
2026-06-21T23:42:57.8620873Z         "impl",
2026-06-21T23:42:57.8620968Z         "unit"
2026-06-21T23:42:57.8621051Z       ],
2026-06-21T23:42:57.8621137Z       "stages": {
2026-06-21T23:42:57.8621220Z         "doc": {
2026-06-21T23:42:57.8621317Z           "complete": false,
2026-06-21T23:42:57.8621404Z           "evidence": []
2026-06-21T23:42:57.8621484Z         },
2026-06-21T23:42:57.8621568Z         "impl": {
2026-06-21T23:42:57.8621653Z           "complete": true,
2026-06-21T23:42:57.8621750Z           "evidence": [
2026-06-21T23:42:57.8621822Z             {
2026-06-21T23:42:57.8621945Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T23:42:57.8622031Z               "line": 76
2026-06-21T23:42:57.8622112Z             },
2026-06-21T23:42:57.8622197Z             {
2026-06-21T23:42:57.8622312Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T23:42:57.8622399Z               "line": 167
2026-06-21T23:42:57.8622475Z             },
2026-06-21T23:42:57.8622550Z             {
2026-06-21T23:42:57.8622660Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T23:42:57.8622751Z               "line": 233
2026-06-21T23:42:57.8622841Z             },
2026-06-21T23:42:57.8622918Z             {
2026-06-21T23:42:57.8623029Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T23:42:57.8623108Z               "line": 272
2026-06-21T23:42:57.8623290Z             }
2026-06-21T23:42:57.8623376Z           ]
2026-06-21T23:42:57.8623456Z         },
2026-06-21T23:42:57.8623537Z         "int": {
2026-06-21T23:42:57.8623634Z           "complete": false,
2026-06-21T23:42:57.8623724Z           "evidence": []
2026-06-21T23:42:57.8623809Z         },
2026-06-21T23:42:57.8623903Z         "unit": {
2026-06-21T23:42:57.8623999Z           "complete": true,
2026-06-21T23:42:57.8624078Z           "evidence": [
2026-06-21T23:42:57.8624163Z             {
2026-06-21T23:42:57.8624283Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T23:42:57.8624374Z               "line": 321
2026-06-21T23:42:57.8624455Z             },
2026-06-21T23:42:57.8624631Z             {
2026-06-21T23:42:57.8624740Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T23:42:57.8624817Z               "line": 329
2026-06-21T23:42:57.8624898Z             },
2026-06-21T23:42:57.8624984Z             {
2026-06-21T23:42:57.8625088Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T23:42:57.8625174Z               "line": 356
2026-06-21T23:42:57.8625261Z             },
2026-06-21T23:42:57.8625351Z             {
2026-06-21T23:42:57.8625456Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T23:42:57.8625552Z               "line": 395
2026-06-21T23:42:57.8625632Z             },
2026-06-21T23:42:57.8625718Z             {
2026-06-21T23:42:57.8625823Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T23:42:57.8625914Z               "line": 406
2026-06-21T23:42:57.8625999Z             },
2026-06-21T23:42:57.8626085Z             {
2026-06-21T23:42:57.8626196Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T23:42:57.8626295Z               "line": 418
2026-06-21T23:42:57.8626381Z             },
2026-06-21T23:42:57.8626458Z             {
2026-06-21T23:42:57.8626563Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-21T23:42:57.8626652Z               "line": 442
2026-06-21T23:42:57.8626737Z             }
2026-06-21T23:42:57.8626813Z           ]
2026-06-21T23:42:57.8626894Z         }
2026-06-21T23:42:57.8626983Z       }
2026-06-21T23:42:57.8627068Z     },
2026-06-21T23:42:57.8627150Z     {
2026-06-21T23:42:57.8627260Z       "id": "REQ-HAZARD-GEN-START-NOW",
2026-06-21T23:42:57.8627412Z       "title": "gen_start = now() on cold-start and handoff (2.4)",
2026-06-21T23:42:57.8627508Z       "requiredStages": [
2026-06-21T23:42:57.8627594Z         "impl",
2026-06-21T23:42:57.8627674Z         "int"
2026-06-21T23:42:57.8627755Z       ],
2026-06-21T23:42:57.8627837Z       "stages": {
2026-06-21T23:42:57.8627928Z         "doc": {
2026-06-21T23:42:57.8628013Z           "complete": false,
2026-06-21T23:42:57.8628119Z           "evidence": []
2026-06-21T23:42:57.8628199Z         },
2026-06-21T23:42:57.8628294Z         "impl": {
2026-06-21T23:42:57.8628385Z           "complete": true,
2026-06-21T23:42:57.8628476Z           "evidence": [
2026-06-21T23:42:57.8628561Z             {
2026-06-21T23:42:57.8628680Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T23:42:57.8628758Z               "line": 22
2026-06-21T23:42:57.8628848Z             }
2026-06-21T23:42:57.8628938Z           ]
2026-06-21T23:42:57.8629111Z         },
2026-06-21T23:42:57.8629205Z         "int": {
2026-06-21T23:42:57.8629295Z           "complete": true,
2026-06-21T23:42:57.8629380Z           "evidence": [
2026-06-21T23:42:57.8629471Z             {
2026-06-21T23:42:57.8629597Z               "path": "crates/spt-daemon/tests/handoff.rs",
2026-06-21T23:42:57.8629688Z               "line": 18
2026-06-21T23:42:57.8629765Z             }
2026-06-21T23:42:57.8629851Z           ]
2026-06-21T23:42:57.8629935Z         },
2026-06-21T23:42:57.8630022Z         "unit": {
2026-06-21T23:42:57.8630113Z           "complete": false,
2026-06-21T23:42:57.8630194Z           "evidence": []
2026-06-21T23:42:57.8630279Z         }
2026-06-21T23:42:57.8630366Z       }
2026-06-21T23:42:57.8630451Z     },
2026-06-21T23:42:57.8630541Z     {
2026-06-21T23:42:57.8630657Z       "id": "REQ-HAZARD-GRACE-BEFORE-SIGNOFF",
2026-06-21T23:42:57.8630947Z       "title": "Grace-period wait completes before composing INIT_SIGNOFF (1.1)",
2026-06-21T23:42:57.8631034Z       "requiredStages": [
2026-06-21T23:42:57.8631128Z         "impl",
2026-06-21T23:42:57.8631213Z         "unit"
2026-06-21T23:42:57.8631291Z       ],
2026-06-21T23:42:57.8631377Z       "stages": {
2026-06-21T23:42:57.8631466Z         "doc": {
2026-06-21T23:42:57.8631562Z           "complete": false,
2026-06-21T23:42:57.8631654Z           "evidence": []
2026-06-21T23:42:57.8631734Z         },
2026-06-21T23:42:57.8631820Z         "impl": {
2026-06-21T23:42:57.8631911Z           "complete": true,
2026-06-21T23:42:57.8632105Z           "evidence": [
2026-06-21T23:42:57.8632190Z             {
2026-06-21T23:42:57.8632315Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T23:42:57.8632406Z               "line": 465
2026-06-21T23:42:57.8632490Z             },
2026-06-21T23:42:57.8632567Z             {
2026-06-21T23:42:57.8632691Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T23:42:57.8632781Z               "line": 27
2026-06-21T23:42:57.8632867Z             }
2026-06-21T23:42:57.8632945Z           ]
2026-06-21T23:42:57.8633030Z         },
2026-06-21T23:42:57.8633110Z         "int": {
2026-06-21T23:42:57.8633201Z           "complete": false,
2026-06-21T23:42:57.8633288Z           "evidence": []
2026-06-21T23:42:57.8633378Z         },
2026-06-21T23:42:57.8633458Z         "unit": {
2026-06-21T23:42:57.8633560Z           "complete": true,
2026-06-21T23:42:57.8633640Z           "evidence": [
2026-06-21T23:42:57.8633726Z             {
2026-06-21T23:42:57.8633841Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T23:42:57.8633937Z               "line": 990
2026-06-21T23:42:57.8634026Z             },
2026-06-21T23:42:57.8634107Z             {
2026-06-21T23:42:57.8634223Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T23:42:57.8634307Z               "line": 181
2026-06-21T23:42:57.8634402Z             }
2026-06-21T23:42:57.8634488Z           ]
2026-06-21T23:42:57.8634569Z         }
2026-06-21T23:42:57.8634652Z       }
2026-06-21T23:42:57.8634738Z     },
2026-06-21T23:42:57.8634819Z     {
2026-06-21T23:42:57.8634935Z       "id": "REQ-HAZARD-HANDOFF-ARGV-COMPAT",
2026-06-21T23:42:57.8635105Z       "title": "Broker/brain IPC + handoff argv version-tolerant (2.3)",
2026-06-21T23:42:57.8635196Z       "requiredStages": [
2026-06-21T23:42:57.8635287Z         "impl",
2026-06-21T23:42:57.8635367Z         "unit"
2026-06-21T23:42:57.8635444Z       ],
2026-06-21T23:42:57.8635540Z       "stages": {
2026-06-21T23:42:57.8635625Z         "doc": {
2026-06-21T23:42:57.8635724Z           "complete": false,
2026-06-21T23:42:57.8635802Z           "evidence": []
2026-06-21T23:42:57.8635892Z         },
2026-06-21T23:42:57.8635982Z         "impl": {
2026-06-21T23:42:57.8636068Z           "complete": true,
2026-06-21T23:42:57.8636164Z           "evidence": [
2026-06-21T23:42:57.8636250Z             {
2026-06-21T23:42:57.8636378Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:42:57.8636470Z               "line": 73
2026-06-21T23:42:57.8636550Z             },
2026-06-21T23:42:57.8636640Z             {
2026-06-21T23:42:57.8636761Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:42:57.8636860Z               "line": 972
2026-06-21T23:42:57.8636941Z             },
2026-06-21T23:42:57.8637028Z             {
2026-06-21T23:42:57.8637142Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T23:42:57.8637227Z               "line": 20
2026-06-21T23:42:57.8637316Z             },
2026-06-21T23:42:57.8637398Z             {
2026-06-21T23:42:57.8637515Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T23:42:57.8637591Z               "line": 100
2026-06-21T23:42:57.8637672Z             },
2026-06-21T23:42:57.8637753Z             {
2026-06-21T23:42:57.8637867Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T23:42:57.8637952Z               "line": 619
2026-06-21T23:42:57.8638111Z             },
2026-06-21T23:42:57.8638196Z             {
2026-06-21T23:42:57.8638316Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-21T23:42:57.8638402Z               "line": 68
2026-06-21T23:42:57.8638483Z             },
2026-06-21T23:42:57.8638568Z             {
2026-06-21T23:42:57.8638689Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-21T23:42:57.8638769Z               "line": 80
2026-06-21T23:42:57.8638840Z             }
2026-06-21T23:42:57.8638926Z           ]
2026-06-21T23:42:57.8639093Z         },
2026-06-21T23:42:57.8639183Z         "int": {
2026-06-21T23:42:57.8639275Z           "complete": true,
2026-06-21T23:42:57.8639479Z           "evidence": [
2026-06-21T23:42:57.8639565Z             {
2026-06-21T23:42:57.8639685Z               "path": "crates/spt/tests/n1_pairing.rs",
2026-06-21T23:42:57.8639774Z               "line": 44
2026-06-21T23:42:57.8639855Z             }
2026-06-21T23:42:57.8639945Z           ]
2026-06-21T23:42:57.8640026Z         },
2026-06-21T23:42:57.8640110Z         "unit": {
2026-06-21T23:42:57.8640195Z           "complete": true,
2026-06-21T23:42:57.8640287Z           "evidence": [
2026-06-21T23:42:57.8640363Z             {
2026-06-21T23:42:57.8640486Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:42:57.8640582Z               "line": 1181
2026-06-21T23:42:57.8640664Z             },
2026-06-21T23:42:57.8640745Z             {
2026-06-21T23:42:57.8640863Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:42:57.8640955Z               "line": 1197
2026-06-21T23:42:57.8641040Z             },
2026-06-21T23:42:57.8641120Z             {
2026-06-21T23:42:57.8641241Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:42:57.8641331Z               "line": 2672
2026-06-21T23:42:57.8641417Z             },
2026-06-21T23:42:57.8641502Z             {
2026-06-21T23:42:57.8641608Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T23:42:57.8641693Z               "line": 152
2026-06-21T23:42:57.8641778Z             },
2026-06-21T23:42:57.8641866Z             {
2026-06-21T23:42:57.8641979Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T23:42:57.8642079Z               "line": 175
2026-06-21T23:42:57.8642166Z             },
2026-06-21T23:42:57.8642252Z             {
2026-06-21T23:42:57.8642355Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T23:42:57.8642442Z               "line": 186
2026-06-21T23:42:57.8642538Z             },
2026-06-21T23:42:57.8642623Z             {
2026-06-21T23:42:57.8642741Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T23:42:57.8642827Z               "line": 202
2026-06-21T23:42:57.8642913Z             },
2026-06-21T23:42:57.8642994Z             {
2026-06-21T23:42:57.8643112Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-21T23:42:57.8643209Z               "line": 216
2026-06-21T23:42:57.8643286Z             },
2026-06-21T23:42:57.8643370Z             {
2026-06-21T23:42:57.8643481Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-21T23:42:57.8643566Z               "line": 137
2026-06-21T23:42:57.8643647Z             },
2026-06-21T23:42:57.8643733Z             {
2026-06-21T23:42:57.8643843Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.8643938Z               "line": 8152
2026-06-21T23:42:57.8644028Z             },
2026-06-21T23:42:57.8644110Z             {
2026-06-21T23:42:57.8644219Z               "path": "crates/spt/tests/n1_compat.rs",
2026-06-21T23:42:57.8644309Z               "line": 30
2026-06-21T23:42:57.8644396Z             },
2026-06-21T23:42:57.8644483Z             {
2026-06-21T23:42:57.8644590Z               "path": "crates/spt/tests/n1_compat.rs",
2026-06-21T23:42:57.8644677Z               "line": 73
2026-06-21T23:42:57.8644759Z             }
2026-06-21T23:42:57.8644844Z           ]
2026-06-21T23:42:57.8644933Z         }
2026-06-21T23:42:57.8645023Z       }
2026-06-21T23:42:57.8645208Z     },
2026-06-21T23:42:57.8645294Z     {
2026-06-21T23:42:57.8645418Z       "id": "REQ-HAZARD-HOSTED-LIVENESS-RECONCILE",
2026-06-21T23:42:57.8649486Z       "title": "B2 KEYSTONE: a daemon-hosted (spt-hosted) endpoint's info.json status is RECONCILED to real liveness, not left latched online. The broker exit-waiter (broker.rs:889-910) reaps its in-mem session table + emits ExitEvent but NEVER touches info.json; lifecycle::mark_offline only fires on Psyche teardown — so a dead/exited harness (operator closed the tab) stays status=online forever (is_perch_alive returns ONLINE for daemon-hosted, liveness.rs:80-93). FIX (doyle ruled PULL-PRIMARY — the live-status analog of REQ-HAZARD-ROSTER-GHOST): the livehost reconcile loop (reconcile_once livehost.rs:226-313) queries the broker's live session set (KIND_SESSIONS) each tick and, for any status=online live_agent perch PAST the boot grace whose endpoint has NO live broker session, marks it offline (lifecycle::mark_offline → status=offline → is_perch_alive=false). GATED on spt-hosted (controllable==Some(true)) so a HARNESS-HOSTED relay live agent (api listen, legitimately online with no broker session) is NEVER mis-marked. Crash-robust + self-healing on the next tick (clear-on-event is not crash-robust alone). PUSH (brain ExitEvent→mark_offline) is an OPTIONAL fast-path only if the daemon brain is reliably subscribed to all hosted sessions; correctness rides the pull. Broker stays stateless (ADR-0004 §B — brain owns the info.json write). (v0.12.0)",
2026-06-21T23:42:57.8649715Z       "requiredStages": [
2026-06-21T23:42:57.8649805Z         "impl",
2026-06-21T23:42:57.8649888Z         "unit",
2026-06-21T23:42:57.8649973Z         "int"
2026-06-21T23:42:57.8650058Z       ],
2026-06-21T23:42:57.8650150Z       "stages": {
2026-06-21T23:42:57.8650231Z         "doc": {
2026-06-21T23:42:57.8650320Z           "complete": false,
2026-06-21T23:42:57.8650400Z           "evidence": []
2026-06-21T23:42:57.8650491Z         },
2026-06-21T23:42:57.8650586Z         "impl": {
2026-06-21T23:42:57.8650675Z           "complete": true,
2026-06-21T23:42:57.8650770Z           "evidence": [
2026-06-21T23:42:57.8650856Z             {
2026-06-21T23:42:57.8650980Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:42:57.8651051Z               "line": 510
2026-06-21T23:42:57.8651142Z             },
2026-06-21T23:42:57.8651224Z             {
2026-06-21T23:42:57.8651333Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:42:57.8651428Z               "line": 704
2026-06-21T23:42:57.8651510Z             }
2026-06-21T23:42:57.8651595Z           ]
2026-06-21T23:42:57.8651676Z         },
2026-06-21T23:42:57.8651757Z         "int": {
2026-06-21T23:42:57.8651858Z           "complete": true,
2026-06-21T23:42:57.8651938Z           "evidence": [
2026-06-21T23:42:57.8652024Z             {
2026-06-21T23:42:57.8652140Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:42:57.8652234Z               "line": 1119
2026-06-21T23:42:57.8652320Z             },
2026-06-21T23:42:57.8652406Z             {
2026-06-21T23:42:57.8652539Z               "path": "crates/spt/tests/attach_wedge_e2e.rs",
2026-06-21T23:42:57.8652621Z               "line": 312
2026-06-21T23:42:57.8652716Z             }
2026-06-21T23:42:57.8652788Z           ]
2026-06-21T23:42:57.8652873Z         },
2026-06-21T23:42:57.8652964Z         "unit": {
2026-06-21T23:42:57.8653055Z           "complete": true,
2026-06-21T23:42:57.8653150Z           "evidence": [
2026-06-21T23:42:57.8653235Z             {
2026-06-21T23:42:57.8653353Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:42:57.8653440Z               "line": 821
2026-06-21T23:42:57.8653526Z             }
2026-06-21T23:42:57.8653610Z           ]
2026-06-21T23:42:57.8653697Z         }
2026-06-21T23:42:57.8653779Z       }
2026-06-21T23:42:57.8653864Z     },
2026-06-21T23:42:57.8653949Z     {
2026-06-21T23:42:57.8654050Z       "id": "REQ-HAZARD-ID-CHARSET",
2026-06-21T23:42:57.8654293Z       "title": "Addressable-id charset reserves :/@ delimiters; validated at every creation seam (4.6)",
2026-06-21T23:42:57.8654493Z       "requiredStages": [
2026-06-21T23:42:57.8654583Z         "impl",
2026-06-21T23:42:57.8654666Z         "unit"
2026-06-21T23:42:57.8654742Z       ],
2026-06-21T23:42:57.8654842Z       "stages": {
2026-06-21T23:42:57.8654927Z         "doc": {
2026-06-21T23:42:57.8655023Z           "complete": true,
2026-06-21T23:42:57.8655104Z           "evidence": [
2026-06-21T23:42:57.8655180Z             {
2026-06-21T23:42:57.8655285Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T23:42:57.8655372Z               "line": 133
2026-06-21T23:42:57.8655456Z             }
2026-06-21T23:42:57.8655618Z           ]
2026-06-21T23:42:57.8655699Z         },
2026-06-21T23:42:57.8655787Z         "impl": {
2026-06-21T23:42:57.8655887Z           "complete": true,
2026-06-21T23:42:57.8655982Z           "evidence": [
2026-06-21T23:42:57.8656065Z             {
2026-06-21T23:42:57.8656182Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T23:42:57.8656269Z               "line": 65
2026-06-21T23:42:57.8656355Z             },
2026-06-21T23:42:57.8656445Z             {
2026-06-21T23:42:57.8656549Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T23:42:57.8656641Z               "line": 17
2026-06-21T23:42:57.8656727Z             },
2026-06-21T23:42:57.8656811Z             {
2026-06-21T23:42:57.8656932Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T23:42:57.8657027Z               "line": 146
2026-06-21T23:42:57.8657107Z             },
2026-06-21T23:42:57.8657193Z             {
2026-06-21T23:42:57.8657309Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:42:57.8657404Z               "line": 310
2026-06-21T23:42:57.8657479Z             },
2026-06-21T23:42:57.8657552Z             {
2026-06-21T23:42:57.8657675Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:42:57.8657765Z               "line": 441
2026-06-21T23:42:57.8657848Z             },
2026-06-21T23:42:57.8657938Z             {
2026-06-21T23:42:57.8658042Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T23:42:57.8658133Z               "line": 32
2026-06-21T23:42:57.8658215Z             },
2026-06-21T23:42:57.8658295Z             {
2026-06-21T23:42:57.8658394Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.8658480Z               "line": 1283
2026-06-21T23:42:57.8658571Z             },
2026-06-21T23:42:57.8658654Z             {
2026-06-21T23:42:57.8658758Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.8658850Z               "line": 6161
2026-06-21T23:42:57.8659021Z             },
2026-06-21T23:42:57.8659106Z             {
2026-06-21T23:42:57.8659217Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.8659303Z               "line": 6443
2026-06-21T23:42:57.8659383Z             }
2026-06-21T23:42:57.8659470Z           ]
2026-06-21T23:42:57.8659555Z         },
2026-06-21T23:42:57.8659645Z         "int": {
2026-06-21T23:42:57.8659741Z           "complete": false,
2026-06-21T23:42:57.8659828Z           "evidence": []
2026-06-21T23:42:57.8659913Z         },
2026-06-21T23:42:57.8659998Z         "unit": {
2026-06-21T23:42:57.8660095Z           "complete": true,
2026-06-21T23:42:57.8660185Z           "evidence": [
2026-06-21T23:42:57.8660270Z             {
2026-06-21T23:42:57.8660385Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T23:42:57.8660467Z               "line": 94
2026-06-21T23:42:57.8660547Z             },
2026-06-21T23:42:57.8660633Z             {
2026-06-21T23:42:57.8660748Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T23:42:57.8660829Z               "line": 111
2026-06-21T23:42:57.8660914Z             },
2026-06-21T23:42:57.8660998Z             {
2026-06-21T23:42:57.8661104Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T23:42:57.8661193Z               "line": 124
2026-06-21T23:42:57.8661273Z             },
2026-06-21T23:42:57.8661364Z             {
2026-06-21T23:42:57.8661474Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T23:42:57.8661688Z               "line": 134
2026-06-21T23:42:57.8661779Z             },
2026-06-21T23:42:57.8661855Z             {
2026-06-21T23:42:57.8661969Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T23:42:57.8662056Z               "line": 144
2026-06-21T23:42:57.8662146Z             },
2026-06-21T23:42:57.8662226Z             {
2026-06-21T23:42:57.8662332Z               "path": "crates/spt-proto/src/id.rs",
2026-06-21T23:42:57.8662427Z               "line": 156
2026-06-21T23:42:57.8662503Z             },
2026-06-21T23:42:57.8662589Z             {
2026-06-21T23:42:57.8662719Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T23:42:57.8662904Z               "line": 746
2026-06-21T23:42:57.8662991Z             },
2026-06-21T23:42:57.8663076Z             {
2026-06-21T23:42:57.8663199Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T23:42:57.8665950Z               "line": 309
2026-06-21T23:42:57.8666068Z             }
2026-06-21T23:42:57.8666153Z           ]
2026-06-21T23:42:57.8666239Z         }
2026-06-21T23:42:57.8666324Z       }
2026-06-21T23:42:57.8666409Z     },
2026-06-21T23:42:57.8666500Z     {
2026-06-21T23:42:57.8666615Z       "id": "REQ-HAZARD-INBOX-NO-DOUBLE",
2026-06-21T23:42:57.8666766Z       "title": "No double-delivery via legacy inbox (4.5)",
2026-06-21T23:42:57.8666862Z       "requiredStages": [
2026-06-21T23:42:57.8666953Z         "impl",
2026-06-21T23:42:57.8667038Z         "unit"
2026-06-21T23:42:57.8667114Z       ],
2026-06-21T23:42:57.8667201Z       "stages": {
2026-06-21T23:42:57.8667287Z         "doc": {
2026-06-21T23:42:57.8667391Z           "complete": false,
2026-06-21T23:42:57.8667478Z           "evidence": []
2026-06-21T23:42:57.8667559Z         },
2026-06-21T23:42:57.8667644Z         "impl": {
2026-06-21T23:42:57.8667744Z           "complete": true,
2026-06-21T23:42:57.8667831Z           "evidence": [
2026-06-21T23:42:57.8667915Z             {
2026-06-21T23:42:57.8668044Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T23:42:57.8668126Z               "line": 128
2026-06-21T23:42:57.8668207Z             }
2026-06-21T23:42:57.8668288Z           ]
2026-06-21T23:42:57.8668374Z         },
2026-06-21T23:42:57.8668456Z         "int": {
2026-06-21T23:42:57.8668545Z           "complete": false,
2026-06-21T23:42:57.8668645Z           "evidence": []
2026-06-21T23:42:57.8668723Z         },
2026-06-21T23:42:57.8668804Z         "unit": {
2026-06-21T23:42:57.8668902Z           "complete": true,
2026-06-21T23:42:57.8669069Z           "evidence": [
2026-06-21T23:42:57.8669159Z             {
2026-06-21T23:42:57.8669271Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T23:42:57.8669367Z               "line": 205
2026-06-21T23:42:57.8669448Z             }
2026-06-21T23:42:57.8669534Z           ]
2026-06-21T23:42:57.8669609Z         }
2026-06-21T23:42:57.8669696Z       }
2026-06-21T23:42:57.8669777Z     },
2026-06-21T23:42:57.8669868Z     {
2026-06-21T23:42:57.8669986Z       "id": "REQ-HAZARD-INFO-JSON-TORN-READ",
2026-06-21T23:42:57.8670139Z       "title": "State-file reads tolerate concurrent writes (1.2)",
2026-06-21T23:42:57.8670243Z       "requiredStages": [
2026-06-21T23:42:57.8670325Z         "impl",
2026-06-21T23:42:57.8670417Z         "unit"
2026-06-21T23:42:57.8670492Z       ],
2026-06-21T23:42:57.8670578Z       "stages": {
2026-06-21T23:42:57.8670660Z         "doc": {
2026-06-21T23:42:57.8670745Z           "complete": false,
2026-06-21T23:42:57.8670835Z           "evidence": []
2026-06-21T23:42:57.8670917Z         },
2026-06-21T23:42:57.8670998Z         "impl": {
2026-06-21T23:42:57.8671093Z           "complete": true,
2026-06-21T23:42:57.8671178Z           "evidence": [
2026-06-21T23:42:57.8671270Z             {
2026-06-21T23:42:57.8671385Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T23:42:57.8671474Z               "line": 367
2026-06-21T23:42:57.8671549Z             },
2026-06-21T23:42:57.8671635Z             {
2026-06-21T23:42:57.8671904Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T23:42:57.8671986Z               "line": 378
2026-06-21T23:42:57.8672068Z             },
2026-06-21T23:42:57.8672152Z             {
2026-06-21T23:42:57.8672258Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T23:42:57.8672349Z               "line": 396
2026-06-21T23:42:57.8672434Z             }
2026-06-21T23:42:57.8672519Z           ]
2026-06-21T23:42:57.8672602Z         },
2026-06-21T23:42:57.8672692Z         "int": {
2026-06-21T23:42:57.8672777Z           "complete": false,
2026-06-21T23:42:57.8672873Z           "evidence": []
2026-06-21T23:42:57.8672950Z         },
2026-06-21T23:42:57.8673140Z         "unit": {
2026-06-21T23:42:57.8673236Z           "complete": true,
2026-06-21T23:42:57.8673321Z           "evidence": [
2026-06-21T23:42:57.8673407Z             {
2026-06-21T23:42:57.8673517Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T23:42:57.8673603Z               "line": 420
2026-06-21T23:42:57.8673692Z             },
2026-06-21T23:42:57.8673779Z             {
2026-06-21T23:42:57.8673890Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T23:42:57.8673974Z               "line": 441
2026-06-21T23:42:57.8674070Z             },
2026-06-21T23:42:57.8674152Z             {
2026-06-21T23:42:57.8674252Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T23:42:57.8674336Z               "line": 811
2026-06-21T23:42:57.8674416Z             },
2026-06-21T23:42:57.8674507Z             {
2026-06-21T23:42:57.8674613Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T23:42:57.8674703Z               "line": 822
2026-06-21T23:42:57.8674793Z             },
2026-06-21T23:42:57.8674875Z             {
2026-06-21T23:42:57.8674984Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T23:42:57.8675074Z               "line": 835
2026-06-21T23:42:57.8675162Z             }
2026-06-21T23:42:57.8675247Z           ]
2026-06-21T23:42:57.8675337Z         }
2026-06-21T23:42:57.8675428Z       }
2026-06-21T23:42:57.8675509Z     },
2026-06-21T23:42:57.8675590Z     {
2026-06-21T23:42:57.8675713Z       "id": "REQ-HAZARD-INJECT-CONTROL-COEXIST",
2026-06-21T23:42:57.8683242Z       "title": "SPINE INVARIANT (v0.13.0 keystone): the broker must accept INJECTED keystrokes into an spt-hosted PTY (the v0.11.0 raw direct-inject today; the ADR-0022 translation-binary choreography tomorrow) WHILE a live `spt rc` controller is attached to the SAME PTY, without (a) the operator losing control, (b) the endpoint latching ONLINE+CONTROLLED, or (c) the broker wedging. The injection inlet is PERMANENT — spt-claude-code requires keystroke injection — so this is root-caused + fixed at the PTY-injection layer, IN STEP with the ADR-0022 delivery redesign that formalizes the inlet. REOPENS the wedge facet of REQ-HAZARD-ATTACH-WEDGE: the v0.12.1 prove-don't-change covered only DEAD-CHILD backpressure, NOT the injection trigger (operator's signal — one injected keystroke succeeds, the next wedges → the single-threaded broker parks on a blocking PTY/loopback write after injection-induced harness output). REPRO-FIRST on the real dummy-harness fixture (NO theory): instrument to nail the exact blocking call before any fix. Fix candidates: non-blocking/fail-fast PTY write, split input/output, bounded-evicting. Mechanism shared with W2 — spt-core owns EVERY PTY write and applies an injected sequence ATOMICALLY (controller input buffered during the sequence, flushed after) so a stash/restore can't be clobbered. CONFIRMED ROOT (doyle /diagnose 2026-06-19, code-grounded): Broker::append (broker.rs:205-227) fans each live output chunk to the CONTROLLER on a SYNCHRONOUS BLOCKING write_frame held inline in the session's drain thread (the 'authoritative, advances delivered_through' path, D4-1), while VIEWERS use a dedicated writer thread + bounded evicting sync_channel (add_viewer:273 / viewer_writer) that can never stall the drain. So a slow/backed-up controller socket — or the full 64KB loopback duplex (the ATTACH-WEDGE buffer) — BLOCKS the drain thread → output stalls → keystroke echoes stall (PERCEIVED input lag) → unrecoverable wedge when the consumer never drains. TRIGGERS ON NORMAL INTERACTIVE rc USE under heavy harness output (TUI redraw), NOT only message injection — same root, wider repro. FIX DIRECTION: move controller delivery off the drain thread onto a dedicated writer (the viewer_writer pattern) BUT preserve the authoritative cursor — block the WRITER thread (not the drain), bound the wedge (deadline → detach/mark-gone, never park forever), never silently evict the operator's authoritative view. (v0.13.0)",
2026-06-21T23:42:57.8683486Z       "requiredStages": [
2026-06-21T23:42:57.8683666Z         "impl",
2026-06-21T23:42:57.8683757Z         "unit",
2026-06-21T23:42:57.8683844Z         "int"
2026-06-21T23:42:57.8683924Z       ],
2026-06-21T23:42:57.8684010Z       "stages": {
2026-06-21T23:42:57.8684092Z         "doc": {
2026-06-21T23:42:57.8684191Z           "complete": false,
2026-06-21T23:42:57.8684277Z           "evidence": []
2026-06-21T23:42:57.8684367Z         },
2026-06-21T23:42:57.8684450Z         "impl": {
2026-06-21T23:42:57.8684534Z           "complete": true,
2026-06-21T23:42:57.8684620Z           "evidence": [
2026-06-21T23:42:57.8684707Z             {
2026-06-21T23:42:57.8684831Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:42:57.8684920Z               "line": 364
2026-06-21T23:42:57.8684995Z             },
2026-06-21T23:42:57.8685082Z             {
2026-06-21T23:42:57.8685197Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:42:57.8685291Z               "line": 835
2026-06-21T23:42:57.8685368Z             },
2026-06-21T23:42:57.8685464Z             {
2026-06-21T23:42:57.8685568Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:42:57.8685658Z               "line": 1104
2026-06-21T23:42:57.8685741Z             }
2026-06-21T23:42:57.8685826Z           ]
2026-06-21T23:42:57.8685911Z         },
2026-06-21T23:42:57.8685998Z         "int": {
2026-06-21T23:42:57.8686097Z           "complete": true,
2026-06-21T23:42:57.8686188Z           "evidence": [
2026-06-21T23:42:57.8686269Z             {
2026-06-21T23:42:57.8686427Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T23:42:57.8686517Z               "line": 256
2026-06-21T23:42:57.8686607Z             },
2026-06-21T23:42:57.8686690Z             {
2026-06-21T23:42:57.8686836Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T23:42:57.8686922Z               "line": 382
2026-06-21T23:42:57.8687005Z             }
2026-06-21T23:42:57.8687094Z           ]
2026-06-21T23:42:57.8687174Z         },
2026-06-21T23:42:57.8687264Z         "unit": {
2026-06-21T23:42:57.8687355Z           "complete": true,
2026-06-21T23:42:57.8687444Z           "evidence": [
2026-06-21T23:42:57.8687524Z             {
2026-06-21T23:42:57.8687639Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:42:57.8687735Z               "line": 2799
2026-06-21T23:42:57.8687811Z             }
2026-06-21T23:42:57.8687896Z           ]
2026-06-21T23:42:57.8687978Z         }
2026-06-21T23:42:57.8688068Z       }
2026-06-21T23:42:57.8688149Z     },
2026-06-21T23:42:57.8688235Z     {
2026-06-21T23:42:57.8688364Z       "id": "REQ-HAZARD-INPUT-ACK-BACKPRESSURE",
2026-06-21T23:42:57.8695681Z       "title": "A FLOOD of operator input on one brain↔broker connection deadlocks the broker PERMANENTLY (entire broker — no new/existing attach; the controller stays latched because the per-conn handler can't process the detach). ROOT (doyle /diagnose, code-grounded + HITL capture, the v0.13.0 P1 ctrl+V re-open): `serve_attach` processes a whole `NetStreamData` batch of N operator `Input` records in its inner `for rec in decoder.push()` loop, calling `brain.send_effect(op_id, &bytes)` N times WITHOUT returning to `read_event()` — so the brain writes N `KIND_INPUT` frames back-to-back and drains nothing. The broker's single-threaded per-conn handler answers EACH with `send_frame(applied_envelope)` on the SAME conn (B5 exactly-once ack, KNOWN-HAZARDS 7.2). With the brain not reading, the broker→brain return direction fills (~10 frames = the IPC pipe buffer) → `send_frame` BLOCKS → the handler stops reading → the brain's writes block too → mutual full-duplex DEADLOCK. Capture pinned it: 11 input frames, write_input 11/11 (P0 holds — the PTY write is fine), ack send START=11 / END=10 (frame #11's applied-ack never returns). Same class as the v0.12.1 L0 two-conn split. Windows Terminal's ctrl+V paste accelerator was the trigger (injects the clipboard as a char-by-char key flood) but the deadlock is generic to ANY input flood, NOT ctrl+V-specific and NOT a P0 (PTY-write) or W1 (output-drain) regression. The applied-ack is load-bearing ONLY for `shellchan` (one-at-a-time spool delivery WAITS on `BrokerEvent::Applied`); `serve_attach` DISCARDS it (the operator/rc path is fire-and-forward, op_id for dedup only, never gates on the ack). FIX (doyle-approved): CONDITIONAL ACK — `InputReq` gains `ack: bool` (serde default = true, N-1-safe: an older brain's input still acks = today's behavior). `serve_attach`'s operator path calls `send_effect_no_ack` (ack=false) → `dispatch_input` writes NO applied frame → the per-conn handler never writes back while servicing the flood → it always drains → no deadlock (cures ANY input flood). `shellchan` keeps `send_effect` (ack=true) and its `Applied`-wait. Exactly-once PRESERVED: the broker still dedups by (session, op_id) at the applied-set regardless of the ack. N-1 caveat: an OLD resident broker (self-update window) ignores `ack=false` → still acks → the deadlock persists until a broker restart (inherent KNOWN-HAZARDS 7.9 broker-resident-wire-change class). (v0.13.0)",
2026-06-21T23:42:57.8696019Z       "requiredStages": [
2026-06-21T23:42:57.8696104Z         "doc",
2026-06-21T23:42:57.8696190Z         "impl",
2026-06-21T23:42:57.8696277Z         "unit",
2026-06-21T23:42:57.8696367Z         "int"
2026-06-21T23:42:57.8696447Z       ],
2026-06-21T23:42:57.8696543Z       "stages": {
2026-06-21T23:42:57.8696635Z         "doc": {
2026-06-21T23:42:57.8696724Z           "complete": true,
2026-06-21T23:42:57.8696819Z           "evidence": [
2026-06-21T23:42:57.8696896Z             {
2026-06-21T23:42:57.8697010Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T23:42:57.8697096Z               "line": 454
2026-06-21T23:42:57.8697177Z             }
2026-06-21T23:42:57.8697264Z           ]
2026-06-21T23:42:57.8697339Z         },
2026-06-21T23:42:57.8697434Z         "impl": {
2026-06-21T23:42:57.8697516Z           "complete": true,
2026-06-21T23:42:57.8697607Z           "evidence": [
2026-06-21T23:42:57.8697692Z             {
2026-06-21T23:42:57.8697819Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T23:42:57.8697906Z               "line": 355
2026-06-21T23:42:57.8697981Z             },
2026-06-21T23:42:57.8698066Z             {
2026-06-21T23:42:57.8698180Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T23:42:57.8698271Z               "line": 493
2026-06-21T23:42:57.8698366Z             },
2026-06-21T23:42:57.8698446Z             {
2026-06-21T23:42:57.8698557Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:42:57.8698647Z               "line": 1907
2026-06-21T23:42:57.8698738Z             },
2026-06-21T23:42:57.8698814Z             {
2026-06-21T23:42:57.8698934Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T23:42:57.8699100Z               "line": 347
2026-06-21T23:42:57.8699178Z             }
2026-06-21T23:42:57.8699258Z           ]
2026-06-21T23:42:57.8699343Z         },
2026-06-21T23:42:57.8699424Z         "int": {
2026-06-21T23:42:57.8699511Z           "complete": true,
2026-06-21T23:42:57.8699601Z           "evidence": [
2026-06-21T23:42:57.8699687Z             {
2026-06-21T23:42:57.8699807Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T23:42:57.8699901Z               "line": 737
2026-06-21T23:42:57.8699983Z             },
2026-06-21T23:42:57.8700069Z             {
2026-06-21T23:42:57.8700282Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T23:42:57.8700384Z               "line": 854
2026-06-21T23:42:57.8700475Z             },
2026-06-21T23:42:57.8700545Z             {
2026-06-21T23:42:57.8700691Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T23:42:57.8700773Z               "line": 544
2026-06-21T23:42:57.8700857Z             },
2026-06-21T23:42:57.8700942Z             {
2026-06-21T23:42:57.8701086Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T23:42:57.8701181Z               "line": 1800
2026-06-21T23:42:57.8701262Z             },
2026-06-21T23:42:57.8701444Z             {
2026-06-21T23:42:57.8701586Z               "path": "crates/spt-daemon/tests/input_ack_deadlock.rs",
2026-06-21T23:42:57.8701667Z               "line": 266
2026-06-21T23:42:57.8701749Z             }
2026-06-21T23:42:57.8701834Z           ]
2026-06-21T23:42:57.8701915Z         },
2026-06-21T23:42:57.8702001Z         "unit": {
2026-06-21T23:42:57.8702092Z           "complete": true,
2026-06-21T23:42:57.8702172Z           "evidence": [
2026-06-21T23:42:57.8702249Z             {
2026-06-21T23:42:57.8702360Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T23:42:57.8702449Z               "line": 1046
2026-06-21T23:42:57.8702540Z             },
2026-06-21T23:42:57.8702621Z             {
2026-06-21T23:42:57.8702736Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T23:42:57.8702821Z               "line": 1080
2026-06-21T23:42:57.8702906Z             }
2026-06-21T23:42:57.8702994Z           ]
2026-06-21T23:42:57.8703075Z         }
2026-06-21T23:42:57.8703154Z       }
2026-06-21T23:42:57.8703234Z     },
2026-06-21T23:42:57.8703321Z     {
2026-06-21T23:42:57.8703429Z       "id": "REQ-HAZARD-INSTANT-UNDERFLOW",
2026-06-21T23:42:57.8703991Z       "title": "Scheduling never subtracts a Duration from Instant::now() (underflow-panics on a host booted more recently than the offset); 'due now / never run' is Option<Instant>=None gated on forward duration_since only (5.9)",
2026-06-21T23:42:57.8704101Z       "requiredStages": [
2026-06-21T23:42:57.8704190Z         "impl",
2026-06-21T23:42:57.8704277Z         "unit"
2026-06-21T23:42:57.8704358Z       ],
2026-06-21T23:42:57.8704444Z       "stages": {
2026-06-21T23:42:57.8704534Z         "doc": {
2026-06-21T23:42:57.8704635Z           "complete": false,
2026-06-21T23:42:57.8704729Z           "evidence": []
2026-06-21T23:42:57.8704810Z         },
2026-06-21T23:42:57.8704897Z         "impl": {
2026-06-21T23:42:57.8704983Z           "complete": true,
2026-06-21T23:42:57.8705064Z           "evidence": [
2026-06-21T23:42:57.8705159Z             {
2026-06-21T23:42:57.8705284Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T23:42:57.8705373Z               "line": 759
2026-06-21T23:42:57.8705454Z             }
2026-06-21T23:42:57.8705537Z           ]
2026-06-21T23:42:57.8705622Z         },
2026-06-21T23:42:57.8705702Z         "int": {
2026-06-21T23:42:57.8705798Z           "complete": false,
2026-06-21T23:42:57.8705894Z           "evidence": []
2026-06-21T23:42:57.8705984Z         },
2026-06-21T23:42:57.8706064Z         "unit": {
2026-06-21T23:42:57.8706159Z           "complete": true,
2026-06-21T23:42:57.8706246Z           "evidence": [
2026-06-21T23:42:57.8706331Z             {
2026-06-21T23:42:57.8706450Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T23:42:57.8706541Z               "line": 873
2026-06-21T23:42:57.8706627Z             }
2026-06-21T23:42:57.8706707Z           ]
2026-06-21T23:42:57.8706783Z         }
2026-06-21T23:42:57.8706861Z       }
2026-06-21T23:42:57.8706946Z     },
2026-06-21T23:42:57.8707031Z     {
2026-06-21T23:42:57.8707161Z       "id": "REQ-HAZARD-LIVEHOST-BOOT-LIVENESS-GATE",
2026-06-21T23:42:57.8709608Z       "title": "B5: `spt daemon start` does NOT revive phantom Psyches for dead-but-online-latched perches. Today reconcile_once (livehost.rs:285) spawns a Psyche per status=online live_agent perch at boot WITHOUT verifying the harness child / {id}-psyche is actually alive — so a Cold start after an unclean stop revives N psyches for N dead-but-latched perches (3 psyches for 3 dead perches). FIX: gate the boot psyche-spawn on real child-liveness — a perch with NO live broker session (the B2 reconcile signal) is marked OFFLINE at boot instead of hosted, so a dead-harness perch is never revived. Shares the B2 reconcile loop (this is its boot-gate arm); composes with B2's honest latch. Also closes wall-a's psyche_host_error gap (residency-confirm does not run at boot tick-1, livehost.rs:395-441 / 257-263). (v0.12.0)",
2026-06-21T23:42:57.8709828Z       "requiredStages": [
2026-06-21T23:42:57.8710014Z         "impl",
2026-06-21T23:42:57.8710095Z         "unit",
2026-06-21T23:42:57.8710180Z         "int"
2026-06-21T23:42:57.8710261Z       ],
2026-06-21T23:42:57.8710343Z       "stages": {
2026-06-21T23:42:57.8710424Z         "doc": {
2026-06-21T23:42:57.8710509Z           "complete": false,
2026-06-21T23:42:57.8710609Z           "evidence": []
2026-06-21T23:42:57.8710697Z         },
2026-06-21T23:42:57.8710781Z         "impl": {
2026-06-21T23:42:57.8710867Z           "complete": true,
2026-06-21T23:42:57.8710959Z           "evidence": [
2026-06-21T23:42:57.8711044Z             {
2026-06-21T23:42:57.8711166Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:42:57.8711256Z               "line": 705
2026-06-21T23:42:57.8711338Z             }
2026-06-21T23:42:57.8711422Z           ]
2026-06-21T23:42:57.8711507Z         },
2026-06-21T23:42:57.8711588Z         "int": {
2026-06-21T23:42:57.8711684Z           "complete": true,
2026-06-21T23:42:57.8711765Z           "evidence": [
2026-06-21T23:42:57.8711850Z             {
2026-06-21T23:42:57.8711980Z               "path": "crates/spt/tests/livehost_bootgate_e2e.rs",
2026-06-21T23:42:57.8712070Z               "line": 24
2026-06-21T23:42:57.8712155Z             }
2026-06-21T23:42:57.8712237Z           ]
2026-06-21T23:42:57.8712318Z         },
2026-06-21T23:42:57.8712404Z         "unit": {
2026-06-21T23:42:57.8712494Z           "complete": true,
2026-06-21T23:42:57.8712585Z           "evidence": [
2026-06-21T23:42:57.8712671Z             {
2026-06-21T23:42:57.8712790Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:42:57.8712876Z               "line": 918
2026-06-21T23:42:57.8712962Z             }
2026-06-21T23:42:57.8713047Z           ]
2026-06-21T23:42:57.8713128Z         }
2026-06-21T23:42:57.8713215Z       }
2026-06-21T23:42:57.8713296Z     },
2026-06-21T23:42:57.8713386Z     {
2026-06-21T23:42:57.8713496Z       "id": "REQ-HAZARD-LIVEHOST-BOOT-RACE",
2026-06-21T23:42:57.8717073Z       "title": "The brain's daemon-hosted Psyche lifecycle surfaces a host-FAILURE on the live perch (harness-diagnosable) and runs net-INDEPENDENTLY. When reconcile_once→host_one→spawn_psyche fails for a state=live_agent+status=online endpoint (e.g. the adapter's psyche binary absent from its install dir, REQ-INSTALL-11), the failure MUST be written to the perch info.json as a CURRENT-STATE field (reason + ts + attempt count; overwritten each 5s retry, CLEARED on successful host) and surfaced by `spt endpoint list`/status — never left as an eprintln on the brain's invisible stderr where a harness reading only perch state is blind. status=online stays authoritative (agent reachable; only the Psyche is missing — brain-restart rehydrate legitimately has online-without-Psyche windows), so this is a SEPARATE psyche-host-health field, never a status de-stamp. Net-independence is a locked-in invariant: spawn_live_host (brainproc.rs:230) reaches the reconcile and hosts the Psyche on a net-less/unpaired/peer-pump-STALLED node, proven by a REAL detached-daemon E2E (real broker→brain-child, real api seed+listen, real install-dir psyche binary). spt-core SURFACES the failure; the adapter owns fixing its packaging.",
2026-06-21T23:42:57.8717192Z       "requiredStages": [
2026-06-21T23:42:57.8717276Z         "impl",
2026-06-21T23:42:57.8717363Z         "unit",
2026-06-21T23:42:57.8717531Z         "int"
2026-06-21T23:42:57.8717610Z       ],
2026-06-21T23:42:57.8717697Z       "stages": {
2026-06-21T23:42:57.8717783Z         "doc": {
2026-06-21T23:42:57.8717878Z           "complete": false,
2026-06-21T23:42:57.8717968Z           "evidence": []
2026-06-21T23:42:57.8718050Z         },
2026-06-21T23:42:57.8718140Z         "impl": {
2026-06-21T23:42:57.8718230Z           "complete": true,
2026-06-21T23:42:57.8718322Z           "evidence": [
2026-06-21T23:42:57.8718399Z             {
2026-06-21T23:42:57.8718526Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:42:57.8718622Z               "line": 391
2026-06-21T23:42:57.8718765Z             },
2026-06-21T23:42:57.8718845Z             {
2026-06-21T23:42:57.8719036Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T23:42:57.8719129Z               "line": 343
2026-06-21T23:42:57.8719219Z             },
2026-06-21T23:42:57.8719310Z             {
2026-06-21T23:42:57.8719411Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.8719491Z               "line": 1750
2026-06-21T23:42:57.8719571Z             },
2026-06-21T23:42:57.8719658Z             {
2026-06-21T23:42:57.8719759Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.8719853Z               "line": 3191
2026-06-21T23:42:57.8719940Z             }
2026-06-21T23:42:57.8720025Z           ]
2026-06-21T23:42:57.8720111Z         },
2026-06-21T23:42:57.8720187Z         "int": {
2026-06-21T23:42:57.8720274Z           "complete": true,
2026-06-21T23:42:57.8720364Z           "evidence": [
2026-06-21T23:42:57.8720444Z             {
2026-06-21T23:42:57.8720579Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-21T23:42:57.8720678Z               "line": 353
2026-06-21T23:42:57.8720755Z             },
2026-06-21T23:42:57.8720831Z             {
2026-06-21T23:42:57.8720970Z               "path": "crates/spt/tests/livehost_psyche_fail_e2e.rs",
2026-06-21T23:42:57.8721059Z               "line": 23
2026-06-21T23:42:57.8721136Z             }
2026-06-21T23:42:57.8721218Z           ]
2026-06-21T23:42:57.8721304Z         },
2026-06-21T23:42:57.8721388Z         "unit": {
2026-06-21T23:42:57.8721484Z           "complete": true,
2026-06-21T23:42:57.8721576Z           "evidence": [
2026-06-21T23:42:57.8721660Z             {
2026-06-21T23:42:57.8721783Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T23:42:57.8721869Z               "line": 743
2026-06-21T23:42:57.8721959Z             },
2026-06-21T23:42:57.8722043Z             {
2026-06-21T23:42:57.8722148Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.8722239Z               "line": 7863
2026-06-21T23:42:57.8722334Z             }
2026-06-21T23:42:57.8722420Z           ]
2026-06-21T23:42:57.8722501Z         }
2026-06-21T23:42:57.8722588Z       }
2026-06-21T23:42:57.8722673Z     },
2026-06-21T23:42:57.8722753Z     {
2026-06-21T23:42:57.8722865Z       "id": "REQ-HAZARD-LIVEHOST-NONRESIDENT",
2026-06-21T23:42:57.8726136Z       "title": "A daemon-hosted Psyche that spawns then EXITS IMMEDIATELY is a host failure, surfaced like a spawn failure (closes the v0.8.1 residual masking): the REQ-HAZARD-LIVEHOST-BOOT-RACE signal stamps `psyche_host_error` only when `spawn_psyche` returns Err, NOT when the detached spawn() returns Ok but the child dies within moments (e.g. a bad-argv child exiting 2 — the F-009 case). That leaves the residual 'online + no Psyche + no cause' gap: the nested `{id}-psyche` info.json is written status=online with a real-but-DEAD pid and the PARENT perch carries NO psyche_host_error (perri's F-010: tasklist showed 0 host procs across the window while info.json read online). The host MUST confirm RESIDENCY — a hosted child not alive (or whose `{id}-psyche` perch never re-registers / has a dead pid) within N seconds of spawn is treated as a host failure: stamp the parent perch `psyche_host_error{reason:\"host not resident within <n>s (psyche perch missing/dead pid)\"}` (and do not leave a phantom online nested perch). Closes the last masking gap the v0.8.1 fix left open. perri's F-010 (v0.8.1 dogfood). Sibling of REQ-HAZARD-LIVEHOST-BOOT-RACE.",
2026-06-21T23:42:57.8726347Z       "requiredStages": [
2026-06-21T23:42:57.8726427Z         "impl",
2026-06-21T23:42:57.8726512Z         "unit",
2026-06-21T23:42:57.8726598Z         "int"
2026-06-21T23:42:57.8726681Z       ],
2026-06-21T23:42:57.8726761Z       "stages": {
2026-06-21T23:42:57.8726836Z         "doc": {
2026-06-21T23:42:57.8726938Z           "complete": false,
2026-06-21T23:42:57.8727033Z           "evidence": []
2026-06-21T23:42:57.8727118Z         },
2026-06-21T23:42:57.8727217Z         "impl": {
2026-06-21T23:42:57.8727308Z           "complete": true,
2026-06-21T23:42:57.8727494Z           "evidence": [
2026-06-21T23:42:57.8727580Z             {
2026-06-21T23:42:57.8727709Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:42:57.8727804Z               "line": 64
2026-06-21T23:42:57.8727889Z             },
2026-06-21T23:42:57.8727971Z             {
2026-06-21T23:42:57.8728096Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:42:57.8728175Z               "line": 78
2026-06-21T23:42:57.8728257Z             },
2026-06-21T23:42:57.8728348Z             {
2026-06-21T23:42:57.8728476Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:42:57.8728557Z               "line": 170
2026-06-21T23:42:57.8728649Z             },
2026-06-21T23:42:57.8728728Z             {
2026-06-21T23:42:57.8728848Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:42:57.8728935Z               "line": 185
2026-06-21T23:42:57.8729096Z             },
2026-06-21T23:42:57.8729182Z             {
2026-06-21T23:42:57.8729302Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:42:57.8729391Z               "line": 195
2026-06-21T23:42:57.8729481Z             },
2026-06-21T23:42:57.8729567Z             {
2026-06-21T23:42:57.8729690Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:42:57.8729779Z               "line": 205
2026-06-21T23:42:57.8729866Z             },
2026-06-21T23:42:57.8729942Z             {
2026-06-21T23:42:57.8730065Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:42:57.8730151Z               "line": 294
2026-06-21T23:42:57.8730238Z             },
2026-06-21T23:42:57.8730328Z             {
2026-06-21T23:42:57.8730437Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:42:57.8730524Z               "line": 308
2026-06-21T23:42:57.8730609Z             },
2026-06-21T23:42:57.8730685Z             {
2026-06-21T23:42:57.8730805Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:42:57.8730905Z               "line": 377
2026-06-21T23:42:57.8730991Z             },
2026-06-21T23:42:57.8731071Z             {
2026-06-21T23:42:57.8731192Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:42:57.8731271Z               "line": 437
2026-06-21T23:42:57.8731357Z             },
2026-06-21T23:42:57.8731444Z             {
2026-06-21T23:42:57.8731563Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:42:57.8731663Z               "line": 455
2026-06-21T23:42:57.8731744Z             }
2026-06-21T23:42:57.8731831Z           ]
2026-06-21T23:42:57.8731910Z         },
2026-06-21T23:42:57.8731992Z         "int": {
2026-06-21T23:42:57.8732074Z           "complete": true,
2026-06-21T23:42:57.8732155Z           "evidence": [
2026-06-21T23:42:57.8732249Z             {
2026-06-21T23:42:57.8732381Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-21T23:42:57.8732472Z               "line": 45
2026-06-21T23:42:57.8732547Z             },
2026-06-21T23:42:57.8732641Z             {
2026-06-21T23:42:57.8732766Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-21T23:42:57.8732852Z               "line": 354
2026-06-21T23:42:57.8732937Z             },
2026-06-21T23:42:57.8733018Z             {
2026-06-21T23:42:57.8733162Z               "path": "crates/spt/tests/livehost_nonresident_e2e.rs",
2026-06-21T23:42:57.8733352Z               "line": 31
2026-06-21T23:42:57.8733444Z             }
2026-06-21T23:42:57.8733525Z           ]
2026-06-21T23:42:57.8733614Z         },
2026-06-21T23:42:57.8733696Z         "unit": {
2026-06-21T23:42:57.8733786Z           "complete": true,
2026-06-21T23:42:57.8733867Z           "evidence": [
2026-06-21T23:42:57.8733953Z             {
2026-06-21T23:42:57.8734078Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:42:57.8734172Z               "line": 727
2026-06-21T23:42:57.8734244Z             }
2026-06-21T23:42:57.8734326Z           ]
2026-06-21T23:42:57.8734407Z         }
2026-06-21T23:42:57.8734606Z       }
2026-06-21T23:42:57.8734684Z     },
2026-06-21T23:42:57.8734769Z     {
2026-06-21T23:42:57.8734877Z       "id": "REQ-HAZARD-LOCAL-API-AUTH",
2026-06-21T23:42:57.8735095Z       "title": "Every local `api` mutation authenticated to an endpoint/session (codex #13)",
2026-06-21T23:42:57.8735199Z       "requiredStages": [
2026-06-21T23:42:57.8735285Z         "impl",
2026-06-21T23:42:57.8735366Z         "unit"
2026-06-21T23:42:57.8735447Z       ],
2026-06-21T23:42:57.8735537Z       "stages": {
2026-06-21T23:42:57.8735623Z         "doc": {
2026-06-21T23:42:57.8735715Z           "complete": false,
2026-06-21T23:42:57.8735814Z           "evidence": []
2026-06-21T23:42:57.8735899Z         },
2026-06-21T23:42:57.8735991Z         "impl": {
2026-06-21T23:42:57.8736077Z           "complete": true,
2026-06-21T23:42:57.8736181Z           "evidence": [
2026-06-21T23:42:57.8736263Z             {
2026-06-21T23:42:57.8736381Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T23:42:57.8736486Z               "line": 14
2026-06-21T23:42:57.8736568Z             },
2026-06-21T23:42:57.8736644Z             {
2026-06-21T23:42:57.8736753Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T23:42:57.8736844Z               "line": 566
2026-06-21T23:42:57.8736931Z             }
2026-06-21T23:42:57.8737011Z           ]
2026-06-21T23:42:57.8737106Z         },
2026-06-21T23:42:57.8737188Z         "int": {
2026-06-21T23:42:57.8737284Z           "complete": false,
2026-06-21T23:42:57.8737373Z           "evidence": []
2026-06-21T23:42:57.8737455Z         },
2026-06-21T23:42:57.8737541Z         "unit": {
2026-06-21T23:42:57.8737641Z           "complete": true,
2026-06-21T23:42:57.8737725Z           "evidence": [
2026-06-21T23:42:57.8737810Z             {
2026-06-21T23:42:57.8737926Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T23:42:57.8738002Z               "line": 130
2026-06-21T23:42:57.8738087Z             },
2026-06-21T23:42:57.8738173Z             {
2026-06-21T23:42:57.8738279Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T23:42:57.8738373Z               "line": 138
2026-06-21T23:42:57.8738454Z             },
2026-06-21T23:42:57.8738536Z             {
2026-06-21T23:42:57.8738646Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T23:42:57.8738740Z               "line": 146
2026-06-21T23:42:57.8738822Z             },
2026-06-21T23:42:57.8738903Z             {
2026-06-21T23:42:57.8739084Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T23:42:57.8739175Z               "line": 154
2026-06-21T23:42:57.8739265Z             },
2026-06-21T23:42:57.8739346Z             {
2026-06-21T23:42:57.8739457Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T23:42:57.8739557Z               "line": 162
2026-06-21T23:42:57.8739636Z             },
2026-06-21T23:42:57.8739723Z             {
2026-06-21T23:42:57.8739824Z               "path": "crates/spt/src/api/auth.rs",
2026-06-21T23:42:57.8739923Z               "line": 170
2026-06-21T23:42:57.8740003Z             }
2026-06-21T23:42:57.8740094Z           ]
2026-06-21T23:42:57.8740184Z         }
2026-06-21T23:42:57.8740264Z       }
2026-06-21T23:42:57.8740349Z     },
2026-06-21T23:42:57.8740430Z     {
2026-06-21T23:42:57.8740551Z       "id": "REQ-HAZARD-PAIR-RATE-LIMIT",
2026-06-21T23:42:57.8741427Z       "title": "Subnet-global pairing rate limit: one active ceremony per subnet, shared attempt counter, exponential backoff — a public pre-trust relay + multiple seed-holders otherwise enables distributed SPAKE2 guessing (and ±1 TOTP window triples the valid-password space) (ADR-0005 #11)",
2026-06-21T23:42:57.8741636Z       "requiredStages": [
2026-06-21T23:42:57.8741728Z         "impl",
2026-06-21T23:42:57.8741804Z         "unit"
2026-06-21T23:42:57.8741889Z       ],
2026-06-21T23:42:57.8741975Z       "stages": {
2026-06-21T23:42:57.8742067Z         "doc": {
2026-06-21T23:42:57.8742161Z           "complete": false,
2026-06-21T23:42:57.8742256Z           "evidence": []
2026-06-21T23:42:57.8742438Z         },
2026-06-21T23:42:57.8742523Z         "impl": {
2026-06-21T23:42:57.8742624Z           "complete": true,
2026-06-21T23:42:57.8742711Z           "evidence": [
2026-06-21T23:42:57.8742795Z             {
2026-06-21T23:42:57.8742941Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T23:42:57.8743042Z               "line": 34
2026-06-21T23:42:57.8743126Z             }
2026-06-21T23:42:57.8743211Z           ]
2026-06-21T23:42:57.8743307Z         },
2026-06-21T23:42:57.8743383Z         "int": {
2026-06-21T23:42:57.8743483Z           "complete": false,
2026-06-21T23:42:57.8743564Z           "evidence": []
2026-06-21T23:42:57.8743651Z         },
2026-06-21T23:42:57.8743736Z         "unit": {
2026-06-21T23:42:57.8743821Z           "complete": true,
2026-06-21T23:42:57.8743912Z           "evidence": [
2026-06-21T23:42:57.8743999Z             {
2026-06-21T23:42:57.8744145Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T23:42:57.8744251Z               "line": 188
2026-06-21T23:42:57.8744333Z             },
2026-06-21T23:42:57.8744413Z             {
2026-06-21T23:42:57.8744546Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T23:42:57.8744652Z               "line": 200
2026-06-21T23:42:57.8744732Z             },
2026-06-21T23:42:57.8744823Z             {
2026-06-21T23:42:57.8744958Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T23:42:57.8745046Z               "line": 211
2026-06-21T23:42:57.8745128Z             },
2026-06-21T23:42:57.8745211Z             {
2026-06-21T23:42:57.8745347Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T23:42:57.8745433Z               "line": 253
2026-06-21T23:42:57.8745518Z             },
2026-06-21T23:42:57.8745609Z             {
2026-06-21T23:42:57.8745735Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T23:42:57.8745825Z               "line": 277
2026-06-21T23:42:57.8745907Z             },
2026-06-21T23:42:57.8745993Z             {
2026-06-21T23:42:57.8746125Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T23:42:57.8746213Z               "line": 300
2026-06-21T23:42:57.8746293Z             },
2026-06-21T23:42:57.8746378Z             {
2026-06-21T23:42:57.8746508Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-21T23:42:57.8746603Z               "line": 316
2026-06-21T23:42:57.8746684Z             }
2026-06-21T23:42:57.8746765Z           ]
2026-06-21T23:42:57.8746857Z         }
2026-06-21T23:42:57.8746941Z       }
2026-06-21T23:42:57.8747027Z     },
2026-06-21T23:42:57.8747113Z     {
2026-06-21T23:42:57.8747228Z       "id": "REQ-HAZARD-PAIR-SEED-ROTATION",
2026-06-21T23:42:57.8747753Z       "title": "Removing a node rotates the subnet seed (epoch bump) so an old node/old seed cannot rejoin; trust-store delete alone is NOT revocation because the seed is replicated to every trusted node (ADR-0005 #10)",
2026-06-21T23:42:57.8747858Z       "requiredStages": [
2026-06-21T23:42:57.8747947Z         "impl",
2026-06-21T23:42:57.8748038Z         "unit"
2026-06-21T23:42:57.8748121Z       ],
2026-06-21T23:42:57.8748219Z       "stages": {
2026-06-21T23:42:57.8748305Z         "doc": {
2026-06-21T23:42:57.8748409Z           "complete": false,
2026-06-21T23:42:57.8748505Z           "evidence": []
2026-06-21T23:42:57.8748657Z         },
2026-06-21T23:42:57.8748748Z         "impl": {
2026-06-21T23:42:57.8748834Z           "complete": true,
2026-06-21T23:42:57.8748933Z           "evidence": [
2026-06-21T23:42:57.8749083Z             {
2026-06-21T23:42:57.8749196Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T23:42:57.8749301Z               "line": 29
2026-06-21T23:42:57.8749382Z             },
2026-06-21T23:42:57.8749468Z             {
2026-06-21T23:42:57.8749582Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T23:42:57.8749673Z               "line": 174
2026-06-21T23:42:57.8749755Z             },
2026-06-21T23:42:57.8749944Z             {
2026-06-21T23:42:57.8750051Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T23:42:57.8750140Z               "line": 194
2026-06-21T23:42:57.8750216Z             },
2026-06-21T23:42:57.8750298Z             {
2026-06-21T23:42:57.8750408Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T23:42:57.8750488Z               "line": 222
2026-06-21T23:42:57.8750582Z             }
2026-06-21T23:42:57.8750663Z           ]
2026-06-21T23:42:57.8750749Z         },
2026-06-21T23:42:57.8750833Z         "int": {
2026-06-21T23:42:57.8750923Z           "complete": false,
2026-06-21T23:42:57.8751010Z           "evidence": []
2026-06-21T23:42:57.8751096Z         },
2026-06-21T23:42:57.8751190Z         "unit": {
2026-06-21T23:42:57.8751281Z           "complete": true,
2026-06-21T23:42:57.8751363Z           "evidence": [
2026-06-21T23:42:57.8751453Z             {
2026-06-21T23:42:57.8751557Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T23:42:57.8751654Z               "line": 329
2026-06-21T23:42:57.8751739Z             },
2026-06-21T23:42:57.8751820Z             {
2026-06-21T23:42:57.8751940Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T23:42:57.8752030Z               "line": 344
2026-06-21T23:42:57.8752120Z             },
2026-06-21T23:42:57.8752196Z             {
2026-06-21T23:42:57.8752326Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T23:42:57.8752416Z               "line": 417
2026-06-21T23:42:57.8752506Z             },
2026-06-21T23:42:57.8752594Z             {
2026-06-21T23:42:57.8752697Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T23:42:57.8752793Z               "line": 433
2026-06-21T23:42:57.8752869Z             },
2026-06-21T23:42:57.8752965Z             {
2026-06-21T23:42:57.8753078Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T23:42:57.8753170Z               "line": 492
2026-06-21T23:42:57.8756026Z             },
2026-06-21T23:42:57.8756140Z             {
2026-06-21T23:42:57.8756286Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T23:42:57.8756385Z               "line": 506
2026-06-21T23:42:57.8756472Z             },
2026-06-21T23:42:57.8756559Z             {
2026-06-21T23:42:57.8756677Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T23:42:57.8756768Z               "line": 517
2026-06-21T23:42:57.8756844Z             },
2026-06-21T23:42:57.8756924Z             {
2026-06-21T23:42:57.8757044Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T23:42:57.8757131Z               "line": 528
2026-06-21T23:42:57.8757216Z             }
2026-06-21T23:42:57.8757306Z           ]
2026-06-21T23:42:57.8757388Z         }
2026-06-21T23:42:57.8757464Z       }
2026-06-21T23:42:57.8757545Z     },
2026-06-21T23:42:57.8757630Z     {
2026-06-21T23:42:57.8757746Z       "id": "REQ-HAZARD-PAIR-TRANSCRIPT-BIND",
2026-06-21T23:42:57.8758446Z       "title": "Pairing transcript binds roles, both node pubkeys, subnet ID, seed epoch, TOTP time-step, and confirmation MACs — or unknown-key-share/reflection/wrong-subnet/replay pairing remain possible (ADR-0005 #12)",
2026-06-21T23:42:57.8758555Z       "requiredStages": [
2026-06-21T23:42:57.8758638Z         "impl",
2026-06-21T23:42:57.8758724Z         "unit"
2026-06-21T23:42:57.8758807Z       ],
2026-06-21T23:42:57.8759099Z       "stages": {
2026-06-21T23:42:57.8759184Z         "doc": {
2026-06-21T23:42:57.8759274Z           "complete": false,
2026-06-21T23:42:57.8759366Z           "evidence": []
2026-06-21T23:42:57.8759442Z         },
2026-06-21T23:42:57.8759532Z         "impl": {
2026-06-21T23:42:57.8759623Z           "complete": true,
2026-06-21T23:42:57.8759713Z           "evidence": [
2026-06-21T23:42:57.8759794Z             {
2026-06-21T23:42:57.8759933Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T23:42:57.8760018Z               "line": 27
2026-06-21T23:42:57.8760100Z             },
2026-06-21T23:42:57.8760185Z             {
2026-06-21T23:42:57.8760424Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T23:42:57.8760509Z               "line": 110
2026-06-21T23:42:57.8760592Z             },
2026-06-21T23:42:57.8760677Z             {
2026-06-21T23:42:57.8760800Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T23:42:57.8760892Z               "line": 153
2026-06-21T23:42:57.8760977Z             },
2026-06-21T23:42:57.8761057Z             {
2026-06-21T23:42:57.8761185Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T23:42:57.8761267Z               "line": 182
2026-06-21T23:42:57.8761356Z             },
2026-06-21T23:42:57.8761436Z             {
2026-06-21T23:42:57.8761584Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T23:42:57.8761671Z               "line": 31
2026-06-21T23:42:57.8761755Z             },
2026-06-21T23:42:57.8761841Z             {
2026-06-21T23:42:57.8761971Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T23:42:57.8762070Z               "line": 113
2026-06-21T23:42:57.8762146Z             },
2026-06-21T23:42:57.8762223Z             {
2026-06-21T23:42:57.8762361Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T23:42:57.8762456Z               "line": 138
2026-06-21T23:42:57.8762534Z             }
2026-06-21T23:42:57.8762624Z           ]
2026-06-21T23:42:57.8762704Z         },
2026-06-21T23:42:57.8762790Z         "int": {
2026-06-21T23:42:57.8762886Z           "complete": false,
2026-06-21T23:42:57.8762976Z           "evidence": []
2026-06-21T23:42:57.8763062Z         },
2026-06-21T23:42:57.8763149Z         "unit": {
2026-06-21T23:42:57.8763239Z           "complete": true,
2026-06-21T23:42:57.8763334Z           "evidence": [
2026-06-21T23:42:57.8763420Z             {
2026-06-21T23:42:57.8763544Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T23:42:57.8763629Z               "line": 261
2026-06-21T23:42:57.8763715Z             },
2026-06-21T23:42:57.8763803Z             {
2026-06-21T23:42:57.8763934Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T23:42:57.8764019Z               "line": 276
2026-06-21T23:42:57.8764105Z             },
2026-06-21T23:42:57.8764186Z             {
2026-06-21T23:42:57.8764312Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T23:42:57.8764403Z               "line": 293
2026-06-21T23:42:57.8764485Z             },
2026-06-21T23:42:57.8764571Z             {
2026-06-21T23:42:57.8764699Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T23:42:57.8764785Z               "line": 310
2026-06-21T23:42:57.8764871Z             },
2026-06-21T23:42:57.8764951Z             {
2026-06-21T23:42:57.8765072Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T23:42:57.8765167Z               "line": 327
2026-06-21T23:42:57.8765247Z             },
2026-06-21T23:42:57.8765328Z             {
2026-06-21T23:42:57.8765443Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T23:42:57.8765533Z               "line": 366
2026-06-21T23:42:57.8765604Z             },
2026-06-21T23:42:57.8765696Z             {
2026-06-21T23:42:57.8765824Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T23:42:57.8765910Z               "line": 179
2026-06-21T23:42:57.8766097Z             },
2026-06-21T23:42:57.8766181Z             {
2026-06-21T23:42:57.8766311Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T23:42:57.8766393Z               "line": 194
2026-06-21T23:42:57.8766478Z             },
2026-06-21T23:42:57.8766553Z             {
2026-06-21T23:42:57.8766677Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T23:42:57.8766767Z               "line": 204
2026-06-21T23:42:57.8766855Z             },
2026-06-21T23:42:57.8766941Z             {
2026-06-21T23:42:57.8767070Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T23:42:57.8767256Z               "line": 259
2026-06-21T23:42:57.8767343Z             },
2026-06-21T23:42:57.8767423Z             {
2026-06-21T23:42:57.8767566Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T23:42:57.8767653Z               "line": 269
2026-06-21T23:42:57.8767738Z             },
2026-06-21T23:42:57.8767828Z             {
2026-06-21T23:42:57.8767953Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T23:42:57.8768052Z               "line": 283
2026-06-21T23:42:57.8768138Z             }
2026-06-21T23:42:57.8768219Z           ]
2026-06-21T23:42:57.8768306Z         }
2026-06-21T23:42:57.8768377Z       }
2026-06-21T23:42:57.8768467Z     },
2026-06-21T23:42:57.8768553Z     {
2026-06-21T23:42:57.8768673Z       "id": "REQ-HAZARD-PARENT-PID-PREFER",
2026-06-21T23:42:57.8768858Z       "title": "Prefer stable parent PID / broker handle over ephemeral PID (2.1)",
2026-06-21T23:42:57.8769034Z       "requiredStages": [],
2026-06-21T23:42:57.8769111Z       "stages": {
2026-06-21T23:42:57.8769203Z         "doc": {
2026-06-21T23:42:57.8769294Z           "complete": false,
2026-06-21T23:42:57.8769382Z           "evidence": []
2026-06-21T23:42:57.8769472Z         },
2026-06-21T23:42:57.8769553Z         "impl": {
2026-06-21T23:42:57.8769650Z           "complete": false,
2026-06-21T23:42:57.8769744Z           "evidence": []
2026-06-21T23:42:57.8769825Z         },
2026-06-21T23:42:57.8769907Z         "int": {
2026-06-21T23:42:57.8769988Z           "complete": false,
2026-06-21T23:42:57.8770073Z           "evidence": []
2026-06-21T23:42:57.8770154Z         },
2026-06-21T23:42:57.8770241Z         "unit": {
2026-06-21T23:42:57.8770322Z           "complete": false,
2026-06-21T23:42:57.8770406Z           "evidence": []
2026-06-21T23:42:57.8770483Z         }
2026-06-21T23:42:57.8770565Z       }
2026-06-21T23:42:57.8770655Z     },
2026-06-21T23:42:57.8770740Z     {
2026-06-21T23:42:57.8770861Z       "id": "REQ-HAZARD-PSYCHE-OUTBOUND-PROXY",
2026-06-21T23:42:57.8771670Z       "title": "Psyche outbound captured + sanitized: the live-Psyche turn driver captures stdout (never Stdio::null), and the daemon strips/re-stamps Psyche-supplied from=/target and constrains routing (reply→__REPLY_TO__ sender, notify→own user/subnet) (7.3)",
2026-06-21T23:42:57.8771774Z       "requiredStages": [
2026-06-21T23:42:57.8771860Z         "impl",
2026-06-21T23:42:57.8771948Z         "unit"
2026-06-21T23:42:57.8772038Z       ],
2026-06-21T23:42:57.8772120Z       "stages": {
2026-06-21T23:42:57.8772212Z         "doc": {
2026-06-21T23:42:57.8772311Z           "complete": false,
2026-06-21T23:42:57.8772392Z           "evidence": []
2026-06-21T23:42:57.8772478Z         },
2026-06-21T23:42:57.8772564Z         "impl": {
2026-06-21T23:42:57.8772659Z           "complete": true,
2026-06-21T23:42:57.8772740Z           "evidence": [
2026-06-21T23:42:57.8772826Z             {
2026-06-21T23:42:57.8772949Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T23:42:57.8773036Z               "line": 26
2026-06-21T23:42:57.8773127Z             },
2026-06-21T23:42:57.8773212Z             {
2026-06-21T23:42:57.8773331Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T23:42:57.8773413Z               "line": 95
2026-06-21T23:42:57.8773503Z             },
2026-06-21T23:42:57.8773589Z             {
2026-06-21T23:42:57.8773808Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T23:42:57.8773894Z               "line": 166
2026-06-21T23:42:57.8773975Z             },
2026-06-21T23:42:57.8774062Z             {
2026-06-21T23:42:57.8774180Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T23:42:57.8774266Z               "line": 19
2026-06-21T23:42:57.8774348Z             },
2026-06-21T23:42:57.8774433Z             {
2026-06-21T23:42:57.8774546Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T23:42:57.8774632Z               "line": 50
2026-06-21T23:42:57.8774704Z             },
2026-06-21T23:42:57.8774792Z             {
2026-06-21T23:42:57.8775002Z               "path": "crates/spt-live/src/turn.rs",
2026-06-21T23:42:57.8775083Z               "line": 18
2026-06-21T23:42:57.8775164Z             },
2026-06-21T23:42:57.8775244Z             {
2026-06-21T23:42:57.8775345Z               "path": "crates/spt-live/src/turn.rs",
2026-06-21T23:42:57.8775436Z               "line": 71
2026-06-21T23:42:57.8775521Z             },
2026-06-21T23:42:57.8775602Z             {
2026-06-21T23:42:57.8775722Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T23:42:57.8775812Z               "line": 87
2026-06-21T23:42:57.8775888Z             }
2026-06-21T23:42:57.8775975Z           ]
2026-06-21T23:42:57.8776060Z         },
2026-06-21T23:42:57.8776146Z         "int": {
2026-06-21T23:42:57.8776241Z           "complete": false,
2026-06-21T23:42:57.8776337Z           "evidence": []
2026-06-21T23:42:57.8776422Z         },
2026-06-21T23:42:57.8776513Z         "unit": {
2026-06-21T23:42:57.8776596Z           "complete": true,
2026-06-21T23:42:57.8776685Z           "evidence": [
2026-06-21T23:42:57.8776765Z             {
2026-06-21T23:42:57.8776881Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T23:42:57.8776967Z               "line": 289
2026-06-21T23:42:57.8777047Z             },
2026-06-21T23:42:57.8777137Z             {
2026-06-21T23:42:57.8777242Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T23:42:57.8777341Z               "line": 314
2026-06-21T23:42:57.8777420Z             },
2026-06-21T23:42:57.8777510Z             {
2026-06-21T23:42:57.8777631Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T23:42:57.8777716Z               "line": 350
2026-06-21T23:42:57.8777797Z             },
2026-06-21T23:42:57.8777883Z             {
2026-06-21T23:42:57.8777998Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T23:42:57.8778082Z               "line": 418
2026-06-21T23:42:57.8778169Z             },
2026-06-21T23:42:57.8778251Z             {
2026-06-21T23:42:57.8778365Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T23:42:57.8778465Z               "line": 429
2026-06-21T23:42:57.8778551Z             },
2026-06-21T23:42:57.8778631Z             {
2026-06-21T23:42:57.8778755Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T23:42:57.8778837Z               "line": 460
2026-06-21T23:42:57.8778923Z             },
2026-06-21T23:42:57.8779080Z             {
2026-06-21T23:42:57.8779195Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T23:42:57.8779275Z               "line": 471
2026-06-21T23:42:57.8779365Z             },
2026-06-21T23:42:57.8779453Z             {
2026-06-21T23:42:57.8779567Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T23:42:57.8779657Z               "line": 77
2026-06-21T23:42:57.8779738Z             },
2026-06-21T23:42:57.8779820Z             {
2026-06-21T23:42:57.8779928Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T23:42:57.8780009Z               "line": 97
2026-06-21T23:42:57.8780094Z             },
2026-06-21T23:42:57.8780176Z             {
2026-06-21T23:42:57.8780290Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T23:42:57.8780380Z               "line": 112
2026-06-21T23:42:57.8780467Z             },
2026-06-21T23:42:57.8780548Z             {
2026-06-21T23:42:57.8780657Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T23:42:57.8780848Z               "line": 123
2026-06-21T23:42:57.8780929Z             },
2026-06-21T23:42:57.8781014Z             {
2026-06-21T23:42:57.8781116Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T23:42:57.8781200Z               "line": 130
2026-06-21T23:42:57.8781281Z             },
2026-06-21T23:42:57.8781368Z             {
2026-06-21T23:42:57.8781491Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-21T23:42:57.8781577Z               "line": 145
2026-06-21T23:42:57.8781658Z             },
2026-06-21T23:42:57.8781745Z             {
2026-06-21T23:42:57.8781853Z               "path": "crates/spt-live/src/turn.rs",
2026-06-21T23:42:57.8782041Z               "line": 115
2026-06-21T23:42:57.8782121Z             },
2026-06-21T23:42:57.8782206Z             {
2026-06-21T23:42:57.8782305Z               "path": "crates/spt-live/src/turn.rs",
2026-06-21T23:42:57.8782392Z               "line": 130
2026-06-21T23:42:57.8782471Z             },
2026-06-21T23:42:57.8782556Z             {
2026-06-21T23:42:57.8782675Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T23:42:57.8782762Z               "line": 428
2026-06-21T23:42:57.8782842Z             }
2026-06-21T23:42:57.8782927Z           ]
2026-06-21T23:42:57.8783005Z         }
2026-06-21T23:42:57.8783091Z       }
2026-06-21T23:42:57.8783176Z     },
2026-06-21T23:42:57.8783256Z     {
2026-06-21T23:42:57.8783382Z       "id": "REQ-HAZARD-PTY-INPUT-WRITER-WEDGE",
2026-06-21T23:42:57.8789640Z       "title": "Pasting into an `spt rc` session WEDGES the broker — after a paste the operator can no longer type AND can no longer attach to NEW or EXISTING sessions (`brain IPC read deadline`). ROOT (doyle /diagnose, code-grounded): the operator-keystroke path rc -> net-stream Input -> serve_attach (attach.rs:197 brain.send_effect) -> KIND_INPUT -> broker dispatch loop (broker.rs:1091) -> dispatch_input (broker.rs:1459) -> session.write_input(&bytes) runs SYNCHRONOUSLY on the broker request-handling thread. W1b (REQ-HAZARD-EFFECT-JOURNAL-PTY-WEDGE) released the journal lock across the effect (fix 1) + made PtyWrite ephemeral/no-fsync (fix 3) but EXPLICITLY DEFERRED fix (2) — bound/fail-fast the PtyWrite itself. A single keystroke never fills the ConPTY input buffer; a PASTE BURST does -> write_input blocks -> the dispatch thread cannot service the next frame (a re-attach subscribe, a become_controller restore-write, an inject-floor flush) -> wedge. Not a bug-2 regression (the byte path funnels to the same write_input; paste just reliably fills the buffer). FIX (doyle design, V0.13.0-P0-PTY-INPUT-WRITER-DESIGN.md, CONTEXT L33 broker-owns-PTY/minimal + L435 SessionSurface + single-writer pattern): one dedicated per-session INPUT-WRITER THREAD = the SOLE caller of the blocking write_input, fed by a BOUNDED FIFO channel; every caller (dispatch_input, serve_attach->send_effect, inject-floor flush) ENQUEUES + returns immediately, never blocks. A blocked/slow harness blocks ONLY its own writer thread, never the broker dispatch. Backpressure (operator ruling): queue full => DROP excess input + stamp the session INPUT_BACKPRESSURE (visible health signal); the daemon NEVER wedges; a merely-slow harness self-heals as the writer drains. Exactly-once preserved (PtyWrite ephemeral: apply_once effect = the non-blocking enqueue => Applied; ack now means accepted+ordered, benign — rc does not gate on landing); order preserved (single FIFO + single writer); inject-floor (W2 Layer C) choreography moves to the lone writer. Completes the W1b-deferred fix (2), cross-platform (cfg(unix) forkpty park folds in). (v0.13.0)",
2026-06-21T23:42:57.8789779Z       "requiredStages": [
2026-06-21T23:42:57.8789863Z         "impl",
2026-06-21T23:42:57.8789950Z         "unit",
2026-06-21T23:42:57.8790032Z         "int"
2026-06-21T23:42:57.8790113Z       ],
2026-06-21T23:42:57.8790202Z       "stages": {
2026-06-21T23:42:57.8790289Z         "doc": {
2026-06-21T23:42:57.8790371Z           "complete": false,
2026-06-21T23:42:57.8790564Z           "evidence": []
2026-06-21T23:42:57.8790650Z         },
2026-06-21T23:42:57.8790737Z         "impl": {
2026-06-21T23:42:57.8790822Z           "complete": true,
2026-06-21T23:42:57.8790907Z           "evidence": [
2026-06-21T23:42:57.8790994Z             {
2026-06-21T23:42:57.8791103Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:42:57.8791188Z               "line": 1021
2026-06-21T23:42:57.8791274Z             },
2026-06-21T23:42:57.8791352Z             {
2026-06-21T23:42:57.8791466Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T23:42:57.8791555Z               "line": 322
2026-06-21T23:42:57.8791742Z             }
2026-06-21T23:42:57.8791827Z           ]
2026-06-21T23:42:57.8791904Z         },
2026-06-21T23:42:57.8791986Z         "int": {
2026-06-21T23:42:57.8792080Z           "complete": true,
2026-06-21T23:42:57.8792156Z           "evidence": [
2026-06-21T23:42:57.8792248Z             {
2026-06-21T23:42:57.8792395Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T23:42:57.8792490Z               "line": 1983
2026-06-21T23:42:57.8792572Z             }
2026-06-21T23:42:57.8792654Z           ]
2026-06-21T23:42:57.8792737Z         },
2026-06-21T23:42:57.8792828Z         "unit": {
2026-06-21T23:42:57.8792909Z           "complete": true,
2026-06-21T23:42:57.8792995Z           "evidence": [
2026-06-21T23:42:57.8793073Z             {
2026-06-21T23:42:57.8793182Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:42:57.8793269Z               "line": 2843
2026-06-21T23:42:57.8793347Z             },
2026-06-21T23:42:57.8793431Z             {
2026-06-21T23:42:57.8793550Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:42:57.8793641Z               "line": 2907
2026-06-21T23:42:57.8793726Z             },
2026-06-21T23:42:57.8793812Z             {
2026-06-21T23:42:57.8793923Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:42:57.8794009Z               "line": 2962
2026-06-21T23:42:57.8794103Z             }
2026-06-21T23:42:57.8794185Z           ]
2026-06-21T23:42:57.8794266Z         }
2026-06-21T23:42:57.8794347Z       }
2026-06-21T23:42:57.8794427Z     },
2026-06-21T23:42:57.8794509Z     {
2026-06-21T23:42:57.8794623Z       "id": "REQ-HAZARD-PUMP-IPC-DEADLINE",
2026-06-21T23:42:57.8795454Z       "title": "The single-threaded peer pump's brain-IPC reads are deadline-bounded (PUMP_PEER_IO_TIMEOUT, total-wait per call); a TimedOut read POISONS the client and escalates to a SUPERVISED RESTART, never a per-peer retry — a black-holed peer must never wedge the whole pump",
2026-06-21T23:42:57.8795558Z       "requiredStages": [
2026-06-21T23:42:57.8795647Z         "doc",
2026-06-21T23:42:57.8795732Z         "impl",
2026-06-21T23:42:57.8795819Z         "unit"
2026-06-21T23:42:57.8795908Z       ],
2026-06-21T23:42:57.8795998Z       "stages": {
2026-06-21T23:42:57.8796089Z         "doc": {
2026-06-21T23:42:57.8796184Z           "complete": true,
2026-06-21T23:42:57.8796284Z           "evidence": [
2026-06-21T23:42:57.8796364Z             {
2026-06-21T23:42:57.8796480Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T23:42:57.8796570Z               "line": 374
2026-06-21T23:42:57.8796656Z             }
2026-06-21T23:42:57.8796737Z           ]
2026-06-21T23:42:57.8796823Z         },
2026-06-21T23:42:57.8796909Z         "impl": {
2026-06-21T23:42:57.8796989Z           "complete": true,
2026-06-21T23:42:57.8797086Z           "evidence": [
2026-06-21T23:42:57.8797171Z             {
2026-06-21T23:42:57.8797295Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T23:42:57.8797386Z               "line": 206
2026-06-21T23:42:57.8797472Z             },
2026-06-21T23:42:57.8797557Z             {
2026-06-21T23:42:57.8797667Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T23:42:57.8797763Z               "line": 310
2026-06-21T23:42:57.8797847Z             },
2026-06-21T23:42:57.8797934Z             {
2026-06-21T23:42:57.8798040Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T23:42:57.8798228Z               "line": 568
2026-06-21T23:42:57.8798319Z             },
2026-06-21T23:42:57.8798404Z             {
2026-06-21T23:42:57.8798517Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T23:42:57.8798612Z               "line": 583
2026-06-21T23:42:57.8798694Z             },
2026-06-21T23:42:57.8798775Z             {
2026-06-21T23:42:57.8798884Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T23:42:57.8799047Z               "line": 1318
2026-06-21T23:42:57.8799123Z             },
2026-06-21T23:42:57.8799203Z             {
2026-06-21T23:42:57.8799328Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T23:42:57.8799513Z               "line": 443
2026-06-21T23:42:57.8799595Z             },
2026-06-21T23:42:57.8799676Z             {
2026-06-21T23:42:57.8799795Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T23:42:57.8799880Z               "line": 590
2026-06-21T23:42:57.8799972Z             },
2026-06-21T23:42:57.8800057Z             {
2026-06-21T23:42:57.8800167Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T23:42:57.8800253Z               "line": 731
2026-06-21T23:42:57.8800334Z             }
2026-06-21T23:42:57.8800429Z           ]
2026-06-21T23:42:57.8800514Z         },
2026-06-21T23:42:57.8800607Z         "int": {
2026-06-21T23:42:57.8800705Z           "complete": false,
2026-06-21T23:42:57.8800792Z           "evidence": []
2026-06-21T23:42:57.8800873Z         },
2026-06-21T23:42:57.8800954Z         "unit": {
2026-06-21T23:42:57.8801053Z           "complete": true,
2026-06-21T23:42:57.8801143Z           "evidence": [
2026-06-21T23:42:57.8801234Z             {
2026-06-21T23:42:57.8801349Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T23:42:57.8801434Z               "line": 1155
2026-06-21T23:42:57.8801519Z             },
2026-06-21T23:42:57.8801597Z             {
2026-06-21T23:42:57.8801730Z               "path": "crates/spt-daemon/tests/pumpdeadline.rs",
2026-06-21T23:42:57.8801825Z               "line": 30
2026-06-21T23:42:57.8801921Z             }
2026-06-21T23:42:57.8802007Z           ]
2026-06-21T23:42:57.8802082Z         }
2026-06-21T23:42:57.8802163Z       }
2026-06-21T23:42:57.8802245Z     },
2026-06-21T23:42:57.8802325Z     {
2026-06-21T23:42:57.8802445Z       "id": "REQ-HAZARD-RC-ATTACH-FAILFAST",
2026-06-21T23:42:57.8805718Z       "title": "B1: `spt rc <id>` to a DEAD or non-streaming session fails fast with a clear message, never an INFINITE blank screen. Today rc.rs run_attach (209-231) + pump spawns PUMP_IPC_READER and blocks: the poll times out each slice but the stream never produces output, so the operator sees a permanent blank (operator: fresh wall-f attached, closed tab, then `spt rc wall-f` HUNG — the broker still resolved a session for it). FIX: (a) once B2 lands, gate attach on is_online/status — an offline endpoint yields a clean 'endpoint offline, start it' not an attach; (b) fail-fast — if the attach-open ack / first output does not arrive within a bound, surface a clear message, never an infinite blank; (c) the broker EOFs the attach stream when the session's child is dead, so rc's existing PumpEnd::BrokerGone graceful path (REQ-HAZARD-RC-EOF) catches it. PIN the exact sub-mechanism with a repro test FIRST (dead-session-lingers-in-broker vs reaped-but-rc-waits vs alive-resting-no-wake — the wall-f Windows tab-close: child alive-silent vs dead-not-reaped). (v0.12.0)",
2026-06-21T23:42:57.8805832Z       "requiredStages": [
2026-06-21T23:42:57.8805927Z         "impl",
2026-06-21T23:42:57.8806009Z         "unit",
2026-06-21T23:42:57.8806096Z         "int"
2026-06-21T23:42:57.8806193Z       ],
2026-06-21T23:42:57.8806283Z       "stages": {
2026-06-21T23:42:57.8806369Z         "doc": {
2026-06-21T23:42:57.8806450Z           "complete": false,
2026-06-21T23:42:57.8806544Z           "evidence": []
2026-06-21T23:42:57.8806629Z         },
2026-06-21T23:42:57.8806721Z         "impl": {
2026-06-21T23:42:57.8806925Z           "complete": true,
2026-06-21T23:42:57.8807012Z           "evidence": [
2026-06-21T23:42:57.8807097Z             {
2026-06-21T23:42:57.8807206Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:42:57.8807302Z               "line": 718
2026-06-21T23:42:57.8807383Z             },
2026-06-21T23:42:57.8807464Z             {
2026-06-21T23:42:57.8807568Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:42:57.8807656Z               "line": 887
2026-06-21T23:42:57.8807740Z             }
2026-06-21T23:42:57.8807826Z           ]
2026-06-21T23:42:57.8807907Z         },
2026-06-21T23:42:57.8807990Z         "int": {
2026-06-21T23:42:57.8808088Z           "complete": true,
2026-06-21T23:42:57.8808247Z           "evidence": [
2026-06-21T23:42:57.8808328Z             {
2026-06-21T23:42:57.8808451Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T23:42:57.8808537Z               "line": 420
2026-06-21T23:42:57.8808615Z             }
2026-06-21T23:42:57.8808690Z           ]
2026-06-21T23:42:57.8808784Z         },
2026-06-21T23:42:57.8808879Z         "unit": {
2026-06-21T23:42:57.8809039Z           "complete": true,
2026-06-21T23:42:57.8809139Z           "evidence": [
2026-06-21T23:42:57.8809220Z             {
2026-06-21T23:42:57.8809345Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:42:57.8809434Z               "line": 1072
2026-06-21T23:42:57.8809525Z             },
2026-06-21T23:42:57.8809612Z             {
2026-06-21T23:42:57.8809711Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:42:57.8809806Z               "line": 1096
2026-06-21T23:42:57.8809889Z             }
2026-06-21T23:42:57.8809974Z           ]
2026-06-21T23:42:57.8810064Z         }
2026-06-21T23:42:57.8810150Z       }
2026-06-21T23:42:57.8810246Z     },
2026-06-21T23:42:57.8810326Z     {
2026-06-21T23:42:57.8810450Z       "id": "REQ-HAZARD-RC-ATTACH-ONLINE-RACE",
2026-06-21T23:42:57.8814101Z       "title": "`spt endpoint run` in an ATTACH/VIEW terminal action attaches BEFORE the freshly-spawned endpoint is online, so the attach races (or outright loses to) the harness bind. ROOT (doyle /diagnose, code-grounded): cmd_endpoint_run (cli.rs) does launch_harness_brokered_in -> (if start: return) -> run_attach with NO await-online between them. launch_harness_brokered_in returns once the harness PROCESS is spawned, but the broker-PTY bind (info status -> STATUS_ONLINE + the live session) lands ASYNC. Both picker attach paths route here with start=false (RunMode::Attach -> cmd_endpoint_run start=false,view=false): Start-now catches the endpoint mid-bringup -> run_attach attempts + loses the handshake race; Resume-from-history catches it still fully OFFLINE -> run_attach's status-gate (REQ-HAZARD-RC-ATTACH-FAILFAST) short-circuits 'offline - nothing to attach' and NEVER attempts. SAME root, two faces (the W4 attach-by-default surfaced both; an online endpoint is unaffected - the picker returns Outcome::Attach, not Run). FIX: in cmd_endpoint_run, when the terminal action is attach/view (NOT start), AWAIT the endpoint online between launch_harness_brokered_in success and run_attach - poll spt_store::info read_info().status to STATUS_ONLINE with a bounded harness-boot deadline (~25s) at a tight interval; on online -> run_attach; on timeout -> ENDPOINT_RUN_ONLINE_TIMEOUT err (do NOT attach a dead bringup). (v0.13.0)",
2026-06-21T23:42:57.8814213Z       "requiredStages": [
2026-06-21T23:42:57.8814294Z         "impl",
2026-06-21T23:42:57.8814380Z         "unit",
2026-06-21T23:42:57.8814467Z         "int"
2026-06-21T23:42:57.8814546Z       ],
2026-06-21T23:42:57.8814637Z       "stages": {
2026-06-21T23:42:57.8814729Z         "doc": {
2026-06-21T23:42:57.8814828Z           "complete": false,
2026-06-21T23:42:57.8814928Z           "evidence": []
2026-06-21T23:42:57.8815010Z         },
2026-06-21T23:42:57.8815090Z         "impl": {
2026-06-21T23:42:57.8815185Z           "complete": true,
2026-06-21T23:42:57.8815281Z           "evidence": [
2026-06-21T23:42:57.8815368Z             {
2026-06-21T23:42:57.8815581Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.8815668Z               "line": 1417
2026-06-21T23:42:57.8815757Z             },
2026-06-21T23:42:57.8815843Z             {
2026-06-21T23:42:57.8815945Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.8816044Z               "line": 1441
2026-06-21T23:42:57.8816120Z             }
2026-06-21T23:42:57.8816206Z           ]
2026-06-21T23:42:57.8816279Z         },
2026-06-21T23:42:57.8816373Z         "int": {
2026-06-21T23:42:57.8816468Z           "complete": true,
2026-06-21T23:42:57.8816555Z           "evidence": [
2026-06-21T23:42:57.8816646Z             {
2026-06-21T23:42:57.8816777Z               "path": "crates/spt/tests/dummy_harness_e2e.rs",
2026-06-21T23:42:57.8816968Z               "line": 329
2026-06-21T23:42:57.8817038Z             }
2026-06-21T23:42:57.8817127Z           ]
2026-06-21T23:42:57.8817219Z         },
2026-06-21T23:42:57.8817304Z         "unit": {
2026-06-21T23:42:57.8817399Z           "complete": true,
2026-06-21T23:42:57.8817485Z           "evidence": [
2026-06-21T23:42:57.8817572Z             {
2026-06-21T23:42:57.8817672Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.8817761Z               "line": 8169
2026-06-21T23:42:57.8817848Z             }
2026-06-21T23:42:57.8817934Z           ]
2026-06-21T23:42:57.8818029Z         }
2026-06-21T23:42:57.8818109Z       }
2026-06-21T23:42:57.8818196Z     },
2026-06-21T23:42:57.8818282Z     {
2026-06-21T23:42:57.8818377Z       "id": "REQ-HAZARD-RC-EOF",
2026-06-21T23:42:57.8822306Z       "title": "A severed broker stream during a live rc session surfaces GRACEFULLY, never as a raw io error that crashes the PTY. The rc read-loop (rc.rs:352-362) continues only on WouldBlock/TimedOut; ANY other read_event_until error — including UnexpectedEof 'failed to fill whole buffer' — returns Err → RC_FAIL → the PTY 'crashes' from the user's view. Confirmed trigger: a deliberate `spt daemon stop` (broker bounce) severs an active rc (perri stopped the daemon to release owlery watch handles). Same severed-broker-stream EOF class as the v0.9.1 seed fix (seed_fail_message) and the listener-death case — spt-core must classify a broker-gone EOF and (a) surface a CLEAR actionable message ('daemon stopped/restarted — re-run / reconnect'), never the raw buffer error, and ideally (b) AUTO-REATTACH to the same session on the fresh broker (the broker is the daemon-lifetime anchor; it returns on the next `spt api` call). FOLD two side-observations: (1) `spt daemon stop` SILENTLY drops active rc/live sessions — warn ('N active session(s) will drop') or graceful-detach on stop; (2) the daemon holds owlery WATCH HANDLES on perch dirs so a torn-down perch dir stays 'Device busy' until a full daemon stop releases them (perri's rt-* cleanup) — a torn-down perch's handle should release without a daemon stop. doyle Finding C, root-caused. (post-v0.10.0)",
2026-06-21T23:42:57.8822417Z       "requiredStages": [
2026-06-21T23:42:57.8822502Z         "impl",
2026-06-21T23:42:57.8822592Z         "unit"
2026-06-21T23:42:57.8822688Z       ],
2026-06-21T23:42:57.8822774Z       "stages": {
2026-06-21T23:42:57.8822859Z         "doc": {
2026-06-21T23:42:57.8822945Z           "complete": false,
2026-06-21T23:42:57.8823041Z           "evidence": []
2026-06-21T23:42:57.8823113Z         },
2026-06-21T23:42:57.8823198Z         "impl": {
2026-06-21T23:42:57.8823293Z           "complete": true,
2026-06-21T23:42:57.8823370Z           "evidence": [
2026-06-21T23:42:57.8823455Z             {
2026-06-21T23:42:57.8823560Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:42:57.8823652Z               "line": 910
2026-06-21T23:42:57.8823732Z             }
2026-06-21T23:42:57.8823818Z           ]
2026-06-21T23:42:57.8823904Z         },
2026-06-21T23:42:57.8823986Z         "int": {
2026-06-21T23:42:57.8824080Z           "complete": false,
2026-06-21T23:42:57.8824166Z           "evidence": []
2026-06-21T23:42:57.8824252Z         },
2026-06-21T23:42:57.8824338Z         "unit": {
2026-06-21T23:42:57.8824428Z           "complete": true,
2026-06-21T23:42:57.8824627Z           "evidence": [
2026-06-21T23:42:57.8824707Z             {
2026-06-21T23:42:57.8824816Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:42:57.8824907Z               "line": 1112
2026-06-21T23:42:57.8824989Z             }
2026-06-21T23:42:57.8825064Z           ]
2026-06-21T23:42:57.8825149Z         }
2026-06-21T23:42:57.8825236Z       }
2026-06-21T23:42:57.8825322Z     },
2026-06-21T23:42:57.8825407Z     {
2026-06-21T23:42:57.8825521Z       "id": "REQ-HAZARD-RC-INPUT-KEY-ENCODING",
2026-06-21T23:42:57.8830123Z       "title": "An `spt rc` session forwards the Backspace key as the VT DEL byte (0x7f), so the hosted TUI (Claude Code) deletes ONE character — never a whole word. SYMPTOM (operator dogfooding): Backspace in an rc session always behaves like ctrl+Backspace — deletes the entire last word. ROOT (doyle /diagnose, code-grounded, byte PENDING HITL confirm): rc is a RAW VERBATIM byte pump — spawn_stdin_reader (rc.rs:152) reads std::io::stdin() bytes under crossterm raw mode and forwards them unchanged (parse_stdin_chunk only intercepts the ctrl-b detach prefix); there is NO key-event encoding and NO 0x08↔0x7f normalization ANYWHERE in the tree (grep: zero SetConsoleMode / ENABLE_VIRTUAL_TERMINAL_INPUT). On Windows, crossterm enable_raw_mode does NOT set ENABLE_VIRTUAL_TERMINAL_INPUT, so the LEGACY console delivers ^H (0x08, ctrl+h) for Backspace instead of VT DEL (0x7f); Claude Code maps ^H → backward-kill-word → the observed whole-word delete. CONFIRM-FIRST (build the loop): an env-gated hexdump in spawn_stdin_reader (SPT_RC_DEBUG_KEYS) prints the forwarded byte; operator presses Backspace + ctrl+Backspace in a real rc session. FIX CANDIDATES: (a) enable ENABLE_VIRTUAL_TERMINAL_INPUT on the rc stdin console on Windows so the console emits proper VT (Backspace→0x7f, arrows/Home/End as CSI) — cleanest, fixes the whole key map not just Backspace; (b) narrow normalize bare 0x08→0x7f in the rc input path (riskier — a real ctrl+h is also 0x08). Prefer (a) unless it regresses other keys. Add a KNOWN-HAZARDS.md entry on landing. (v0.13.0)",
2026-06-21T23:42:57.8830345Z       "requiredStages": [
2026-06-21T23:42:57.8830431Z         "impl",
2026-06-21T23:42:57.8830526Z         "unit"
2026-06-21T23:42:57.8830607Z       ],
2026-06-21T23:42:57.8830694Z       "stages": {
2026-06-21T23:42:57.8830779Z         "doc": {
2026-06-21T23:42:57.8830869Z           "complete": false,
2026-06-21T23:42:57.8830960Z           "evidence": []
2026-06-21T23:42:57.8831042Z         },
2026-06-21T23:42:57.8831128Z         "impl": {
2026-06-21T23:42:57.8831222Z           "complete": true,
2026-06-21T23:42:57.8831314Z           "evidence": [
2026-06-21T23:42:57.8831399Z             {
2026-06-21T23:42:57.8831508Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:42:57.8831584Z               "line": 264
2026-06-21T23:42:57.8831672Z             }
2026-06-21T23:42:57.8831756Z           ]
2026-06-21T23:42:57.8831832Z         },
2026-06-21T23:42:57.8831914Z         "int": {
2026-06-21T23:42:57.8832015Z           "complete": false,
2026-06-21T23:42:57.8832104Z           "evidence": []
2026-06-21T23:42:57.8832186Z         },
2026-06-21T23:42:57.8832268Z         "unit": {
2026-06-21T23:42:57.8832358Z           "complete": true,
2026-06-21T23:42:57.8832443Z           "evidence": [
2026-06-21T23:42:57.8832534Z             {
2026-06-21T23:42:57.8832631Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:42:57.8832724Z               "line": 1094
2026-06-21T23:42:57.8832805Z             },
2026-06-21T23:42:57.8832886Z             {
2026-06-21T23:42:57.8833001Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:42:57.8833081Z               "line": 1225
2026-06-21T23:42:57.8833171Z             },
2026-06-21T23:42:57.8833258Z             {
2026-06-21T23:42:57.8833368Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:42:57.8833458Z               "line": 1227
2026-06-21T23:42:57.8833544Z             }
2026-06-21T23:42:57.8833630Z           ]
2026-06-21T23:42:57.8833835Z         }
2026-06-21T23:42:57.8833916Z       }
2026-06-21T23:42:57.8833992Z     },
2026-06-21T23:42:57.8834077Z     {
2026-06-21T23:42:57.8834193Z       "id": "REQ-HAZARD-REGISTRY-CONCURRENT",
2026-06-21T23:42:57.8834440Z       "title": "Concurrent SQLite openers (registry/spool) must not fail with 'database is locked' (4.7)",
2026-06-21T23:42:57.8834537Z       "requiredStages": [
2026-06-21T23:42:57.8834617Z         "impl",
2026-06-21T23:42:57.8834707Z         "unit"
2026-06-21T23:42:57.8834788Z       ],
2026-06-21T23:42:57.8834871Z       "stages": {
2026-06-21T23:42:57.8834954Z         "doc": {
2026-06-21T23:42:57.8835054Z           "complete": true,
2026-06-21T23:42:57.8835216Z           "evidence": [
2026-06-21T23:42:57.8835305Z             {
2026-06-21T23:42:57.8835414Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T23:42:57.8835505Z               "line": 139
2026-06-21T23:42:57.8835587Z             }
2026-06-21T23:42:57.8835662Z           ]
2026-06-21T23:42:57.8835743Z         },
2026-06-21T23:42:57.8835829Z         "impl": {
2026-06-21T23:42:57.8835925Z           "complete": true,
2026-06-21T23:42:57.8836015Z           "evidence": [
2026-06-21T23:42:57.8836101Z             {
2026-06-21T23:42:57.8836216Z               "path": "crates/spt-store/src/db.rs",
2026-06-21T23:42:57.8836301Z               "line": 29
2026-06-21T23:42:57.8836392Z             },
2026-06-21T23:42:57.8836473Z             {
2026-06-21T23:42:57.8836578Z               "path": "crates/spt-store/src/db.rs",
2026-06-21T23:42:57.8836672Z               "line": 67
2026-06-21T23:42:57.8836760Z             },
2026-06-21T23:42:57.8836845Z             {
2026-06-21T23:42:57.8836954Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T23:42:57.8837055Z               "line": 101
2026-06-21T23:42:57.8837146Z             },
2026-06-21T23:42:57.8837230Z             {
2026-06-21T23:42:57.8837351Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T23:42:57.8837432Z               "line": 30
2026-06-21T23:42:57.8837521Z             },
2026-06-21T23:42:57.8837608Z             {
2026-06-21T23:42:57.8837728Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T23:42:57.8837808Z               "line": 48
2026-06-21T23:42:57.8837893Z             }
2026-06-21T23:42:57.8837978Z           ]
2026-06-21T23:42:57.8838046Z         },
2026-06-21T23:42:57.8838139Z         "int": {
2026-06-21T23:42:57.8838233Z           "complete": false,
2026-06-21T23:42:57.8838314Z           "evidence": []
2026-06-21T23:42:57.8838391Z         },
2026-06-21T23:42:57.8838473Z         "unit": {
2026-06-21T23:42:57.8838571Z           "complete": true,
2026-06-21T23:42:57.8838653Z           "evidence": [
2026-06-21T23:42:57.8838754Z             {
2026-06-21T23:42:57.8838863Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T23:42:57.8839007Z               "line": 162
2026-06-21T23:42:57.8839097Z             }
2026-06-21T23:42:57.8839178Z           ]
2026-06-21T23:42:57.8839259Z         }
2026-06-21T23:42:57.8839345Z       }
2026-06-21T23:42:57.8839435Z     },
2026-06-21T23:42:57.8839516Z     {
2026-06-21T23:42:57.8839637Z       "id": "REQ-HAZARD-REGISTRY-DIR-CREATE",
2026-06-21T23:42:57.8840023Z       "title": "SQLite store opens create their parent dir themselves — a fresh-home registry op must not SQLITE_CANTOPEN (4.9)",
2026-06-21T23:42:57.8840121Z       "requiredStages": [
2026-06-21T23:42:57.8840198Z         "doc",
2026-06-21T23:42:57.8840285Z         "impl",
2026-06-21T23:42:57.8840371Z         "unit"
2026-06-21T23:42:57.8840454Z       ],
2026-06-21T23:42:57.8840535Z       "stages": {
2026-06-21T23:42:57.8840621Z         "doc": {
2026-06-21T23:42:57.8840716Z           "complete": true,
2026-06-21T23:42:57.8840819Z           "evidence": [
2026-06-21T23:42:57.8840901Z             {
2026-06-21T23:42:57.8841011Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T23:42:57.8841105Z               "line": 151
2026-06-21T23:42:57.8841186Z             }
2026-06-21T23:42:57.8841269Z           ]
2026-06-21T23:42:57.8844176Z         },
2026-06-21T23:42:57.8844294Z         "impl": {
2026-06-21T23:42:57.8844400Z           "complete": true,
2026-06-21T23:42:57.8844495Z           "evidence": [
2026-06-21T23:42:57.8844571Z             {
2026-06-21T23:42:57.8844709Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T23:42:57.8844801Z               "line": 22
2026-06-21T23:42:57.8844881Z             }
2026-06-21T23:42:57.8844971Z           ]
2026-06-21T23:42:57.8845053Z         },
2026-06-21T23:42:57.8845139Z         "int": {
2026-06-21T23:42:57.8845238Z           "complete": false,
2026-06-21T23:42:57.8845324Z           "evidence": []
2026-06-21T23:42:57.8845407Z         },
2026-06-21T23:42:57.8845628Z         "unit": {
2026-06-21T23:42:57.8845724Z           "complete": true,
2026-06-21T23:42:57.8845799Z           "evidence": [
2026-06-21T23:42:57.8845884Z             {
2026-06-21T23:42:57.8846012Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T23:42:57.8846099Z               "line": 298
2026-06-21T23:42:57.8846194Z             }
2026-06-21T23:42:57.8846279Z           ]
2026-06-21T23:42:57.8846366Z         }
2026-06-21T23:42:57.8846452Z       }
2026-06-21T23:42:57.8846537Z     },
2026-06-21T23:42:57.8846617Z     {
2026-06-21T23:42:57.8846743Z       "id": "REQ-HAZARD-REGISTRY-EPOCH-LEASE",
2026-06-21T23:42:57.8847219Z       "title": "Registry merge ordered by per-node monotonic epoch, never wall-clock — a stale Active can't clobber a newer Offline (4.8, red-team #8)",
2026-06-21T23:42:57.8847315Z       "requiredStages": [
2026-06-21T23:42:57.8847395Z         "impl",
2026-06-21T23:42:57.8847481Z         "unit"
2026-06-21T23:42:57.8847571Z       ],
2026-06-21T23:42:57.8847659Z       "stages": {
2026-06-21T23:42:57.8847743Z         "doc": {
2026-06-21T23:42:57.8847834Z           "complete": true,
2026-06-21T23:42:57.8847925Z           "evidence": [
2026-06-21T23:42:57.8848006Z             {
2026-06-21T23:42:57.8848115Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T23:42:57.8848201Z               "line": 145
2026-06-21T23:42:57.8848293Z             }
2026-06-21T23:42:57.8848373Z           ]
2026-06-21T23:42:57.8848458Z         },
2026-06-21T23:42:57.8848543Z         "impl": {
2026-06-21T23:42:57.8848634Z           "complete": true,
2026-06-21T23:42:57.8848718Z           "evidence": [
2026-06-21T23:42:57.8848803Z             {
2026-06-21T23:42:57.8849033Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-21T23:42:57.8849113Z               "line": 160
2026-06-21T23:42:57.8849194Z             },
2026-06-21T23:42:57.8849281Z             {
2026-06-21T23:42:57.8849409Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:42:57.8849494Z               "line": 200
2026-06-21T23:42:57.8849581Z             },
2026-06-21T23:42:57.8849667Z             {
2026-06-21T23:42:57.8849789Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:42:57.8849887Z               "line": 298
2026-06-21T23:42:57.8849967Z             },
2026-06-21T23:42:57.8850057Z             {
2026-06-21T23:42:57.8850162Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-21T23:42:57.8850253Z               "line": 20
2026-06-21T23:42:57.8850343Z             }
2026-06-21T23:42:57.8850415Z           ]
2026-06-21T23:42:57.8850497Z         },
2026-06-21T23:42:57.8850583Z         "int": {
2026-06-21T23:42:57.8850681Z           "complete": false,
2026-06-21T23:42:57.8850768Z           "evidence": []
2026-06-21T23:42:57.8850855Z         },
2026-06-21T23:42:57.8850935Z         "unit": {
2026-06-21T23:42:57.8851019Z           "complete": true,
2026-06-21T23:42:57.8851114Z           "evidence": [
2026-06-21T23:42:57.8851191Z             {
2026-06-21T23:42:57.8851313Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:42:57.8851403Z               "line": 937
2026-06-21T23:42:57.8851485Z             },
2026-06-21T23:42:57.8851566Z             {
2026-06-21T23:42:57.8851698Z               "path": "crates/spt-daemon/tests/replicate.rs",
2026-06-21T23:42:57.8851885Z               "line": 88
2026-06-21T23:42:57.8851962Z             },
2026-06-21T23:42:57.8852052Z             {
2026-06-21T23:42:57.8852167Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:42:57.8852253Z               "line": 851
2026-06-21T23:42:57.8852337Z             },
2026-06-21T23:42:57.8852420Z             {
2026-06-21T23:42:57.8852543Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:42:57.8852624Z               "line": 870
2026-06-21T23:42:57.8852714Z             },
2026-06-21T23:42:57.8852802Z             {
2026-06-21T23:42:57.8852925Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T23:42:57.8853116Z               "line": 279
2026-06-21T23:42:57.8853192Z             },
2026-06-21T23:42:57.8853282Z             {
2026-06-21T23:42:57.8853393Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-21T23:42:57.8853483Z               "line": 82
2026-06-21T23:42:57.8853568Z             },
2026-06-21T23:42:57.8853659Z             {
2026-06-21T23:42:57.8853775Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-21T23:42:57.8853854Z               "line": 99
2026-06-21T23:42:57.8853944Z             },
2026-06-21T23:42:57.8854030Z             {
2026-06-21T23:42:57.8854136Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-21T23:42:57.8854234Z               "line": 119
2026-06-21T23:42:57.8854315Z             }
2026-06-21T23:42:57.8854407Z           ]
2026-06-21T23:42:57.8854488Z         }
2026-06-21T23:42:57.8854573Z       }
2026-06-21T23:42:57.8854660Z     },
2026-06-21T23:42:57.8854741Z     {
2026-06-21T23:42:57.8854850Z       "id": "REQ-HAZARD-REGISTRY-GHOST-ROWS",
2026-06-21T23:42:57.8856156Z       "title": "A dead node identity's registry rows must decay: only the per-(endpoint,node) epoch lease supersedes rows, so without eviction a vanished node's rows are immortal and poison bare-id resolution with phantom AcrossNodes ambiguity — evict rows whose author node has not been heard (admitted inbound feed) within the eviction window; own rows never decay; a revived node re-inserts from its durable epoch within one pump cadence (4.10)",
2026-06-21T23:42:57.8856269Z       "requiredStages": [
2026-06-21T23:42:57.8856355Z         "doc",
2026-06-21T23:42:57.8856439Z         "impl",
2026-06-21T23:42:57.8856529Z         "unit"
2026-06-21T23:42:57.8856611Z       ],
2026-06-21T23:42:57.8856698Z       "stages": {
2026-06-21T23:42:57.8856782Z         "doc": {
2026-06-21T23:42:57.8856878Z           "complete": true,
2026-06-21T23:42:57.8856960Z           "evidence": [
2026-06-21T23:42:57.8857045Z             {
2026-06-21T23:42:57.8857159Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T23:42:57.8857246Z               "line": 157
2026-06-21T23:42:57.8857331Z             }
2026-06-21T23:42:57.8857411Z           ]
2026-06-21T23:42:57.8857492Z         },
2026-06-21T23:42:57.8857580Z         "impl": {
2026-06-21T23:42:57.8857674Z           "complete": true,
2026-06-21T23:42:57.8857769Z           "evidence": [
2026-06-21T23:42:57.8857846Z             {
2026-06-21T23:42:57.8857979Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T23:42:57.8858070Z               "line": 137
2026-06-21T23:42:57.8858156Z             },
2026-06-21T23:42:57.8858233Z             {
2026-06-21T23:42:57.8858361Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:42:57.8858442Z               "line": 564
2026-06-21T23:42:57.8858524Z             },
2026-06-21T23:42:57.8858609Z             {
2026-06-21T23:42:57.8858733Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:42:57.8858819Z               "line": 571
2026-06-21T23:42:57.8858896Z             },
2026-06-21T23:42:57.8859060Z             {
2026-06-21T23:42:57.8859180Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:42:57.8859273Z               "line": 227
2026-06-21T23:42:57.8859359Z             }
2026-06-21T23:42:57.8859440Z           ]
2026-06-21T23:42:57.8859521Z         },
2026-06-21T23:42:57.8859702Z         "int": {
2026-06-21T23:42:57.8859798Z           "complete": false,
2026-06-21T23:42:57.8859888Z           "evidence": []
2026-06-21T23:42:57.8859973Z         },
2026-06-21T23:42:57.8860054Z         "unit": {
2026-06-21T23:42:57.8860142Z           "complete": true,
2026-06-21T23:42:57.8860232Z           "evidence": [
2026-06-21T23:42:57.8860317Z             {
2026-06-21T23:42:57.8860437Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:42:57.8860532Z               "line": 1622
2026-06-21T23:42:57.8860617Z             },
2026-06-21T23:42:57.8860703Z             {
2026-06-21T23:42:57.8860823Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:42:57.8861028Z               "line": 1680
2026-06-21T23:42:57.8861110Z             },
2026-06-21T23:42:57.8861194Z             {
2026-06-21T23:42:57.8861309Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:42:57.8861391Z               "line": 883
2026-06-21T23:42:57.8861486Z             }
2026-06-21T23:42:57.8861570Z           ]
2026-06-21T23:42:57.8861651Z         }
2026-06-21T23:42:57.8861737Z       }
2026-06-21T23:42:57.8861822Z     },
2026-06-21T23:42:57.8861902Z     {
2026-06-21T23:42:57.8862016Z       "id": "REQ-HAZARD-REGISTRY-STALE-CLEAN",
2026-06-21T23:42:57.8862207Z       "title": "Stale registry entries degrade to fallback, never hard-fail (4.3)",
2026-06-21T23:42:57.8862307Z       "requiredStages": [
2026-06-21T23:42:57.8862393Z         "impl",
2026-06-21T23:42:57.8862474Z         "unit"
2026-06-21T23:42:57.8862555Z       ],
2026-06-21T23:42:57.8862640Z       "stages": {
2026-06-21T23:42:57.8862727Z         "doc": {
2026-06-21T23:42:57.8862827Z           "complete": false,
2026-06-21T23:42:57.8862907Z           "evidence": []
2026-06-21T23:42:57.8862995Z         },
2026-06-21T23:42:57.8863075Z         "impl": {
2026-06-21T23:42:57.8863175Z           "complete": true,
2026-06-21T23:42:57.8863251Z           "evidence": [
2026-06-21T23:42:57.8863338Z             {
2026-06-21T23:42:57.8863451Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T23:42:57.8863537Z               "line": 15
2026-06-21T23:42:57.8863629Z             },
2026-06-21T23:42:57.8863705Z             {
2026-06-21T23:42:57.8863814Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T23:42:57.8863900Z               "line": 55
2026-06-21T23:42:57.8863982Z             },
2026-06-21T23:42:57.8864057Z             {
2026-06-21T23:42:57.8864176Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T23:42:57.8864268Z               "line": 66
2026-06-21T23:42:57.8864353Z             },
2026-06-21T23:42:57.8864442Z             {
2026-06-21T23:42:57.8864561Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T23:42:57.8864643Z               "line": 115
2026-06-21T23:42:57.8864738Z             },
2026-06-21T23:42:57.8864813Z             {
2026-06-21T23:42:57.8864933Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T23:42:57.8865019Z               "line": 138
2026-06-21T23:42:57.8865105Z             }
2026-06-21T23:42:57.8865190Z           ]
2026-06-21T23:42:57.8865273Z         },
2026-06-21T23:42:57.8865363Z         "int": {
2026-06-21T23:42:57.8865443Z           "complete": false,
2026-06-21T23:42:57.8865534Z           "evidence": []
2026-06-21T23:42:57.8865616Z         },
2026-06-21T23:42:57.8865701Z         "unit": {
2026-06-21T23:42:57.8865796Z           "complete": true,
2026-06-21T23:42:57.8865878Z           "evidence": [
2026-06-21T23:42:57.8865964Z             {
2026-06-21T23:42:57.8866077Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T23:42:57.8866169Z               "line": 363
2026-06-21T23:42:57.8866269Z             },
2026-06-21T23:42:57.8866353Z             {
2026-06-21T23:42:57.8866469Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T23:42:57.8866565Z               "line": 369
2026-06-21T23:42:57.8866654Z             },
2026-06-21T23:42:57.8866730Z             {
2026-06-21T23:42:57.8866902Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T23:42:57.8866990Z               "line": 383
2026-06-21T23:42:57.8867071Z             },
2026-06-21T23:42:57.8867161Z             {
2026-06-21T23:42:57.8867272Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T23:42:57.8867356Z               "line": 392
2026-06-21T23:42:57.8867433Z             },
2026-06-21T23:42:57.8867510Z             {
2026-06-21T23:42:57.8867629Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T23:42:57.8867709Z               "line": 195
2026-06-21T23:42:57.8867796Z             },
2026-06-21T23:42:57.8867881Z             {
2026-06-21T23:42:57.8868067Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T23:42:57.8868154Z               "line": 208
2026-06-21T23:42:57.8868234Z             },
2026-06-21T23:42:57.8868310Z             {
2026-06-21T23:42:57.8868425Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T23:42:57.8868511Z               "line": 271
2026-06-21T23:42:57.8868602Z             },
2026-06-21T23:42:57.8868682Z             {
2026-06-21T23:42:57.8868798Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T23:42:57.8868878Z               "line": 290
2026-06-21T23:42:57.8869046Z             },
2026-06-21T23:42:57.8869127Z             {
2026-06-21T23:42:57.8869245Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T23:42:57.8869326Z               "line": 319
2026-06-21T23:42:57.8869409Z             }
2026-06-21T23:42:57.8869493Z           ]
2026-06-21T23:42:57.8869578Z         }
2026-06-21T23:42:57.8869658Z       }
2026-06-21T23:42:57.8869740Z     },
2026-06-21T23:42:57.8869829Z     {
2026-06-21T23:42:57.8869942Z       "id": "REQ-HAZARD-RESTART-IDEMPOTENT",
2026-06-21T23:42:57.8870219Z       "title": "Idempotent/exactly-once delivery across brain restart at every broker boundary (codex #14)",
2026-06-21T23:42:57.8870305Z       "requiredStages": [
2026-06-21T23:42:57.8870382Z         "impl",
2026-06-21T23:42:57.8870468Z         "unit",
2026-06-21T23:42:57.8870548Z         "int"
2026-06-21T23:42:57.8870639Z       ],
2026-06-21T23:42:57.8870725Z       "stages": {
2026-06-21T23:42:57.8870816Z         "doc": {
2026-06-21T23:42:57.8870910Z           "complete": false,
2026-06-21T23:42:57.8870997Z           "evidence": []
2026-06-21T23:42:57.8871082Z         },
2026-06-21T23:42:57.8871163Z         "impl": {
2026-06-21T23:42:57.8871254Z           "complete": true,
2026-06-21T23:42:57.8871341Z           "evidence": [
2026-06-21T23:42:57.8871425Z             {
2026-06-21T23:42:57.8871540Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T23:42:57.8871627Z               "line": 480
2026-06-21T23:42:57.8871712Z             },
2026-06-21T23:42:57.8871797Z             {
2026-06-21T23:42:57.8871903Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T23:42:57.8871994Z               "line": 1010
2026-06-21T23:42:57.8872083Z             },
2026-06-21T23:42:57.8872163Z             {
2026-06-21T23:42:57.8872273Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T23:42:57.8872363Z               "line": 1055
2026-06-21T23:42:57.8872448Z             },
2026-06-21T23:42:57.8872528Z             {
2026-06-21T23:42:57.8872643Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T23:42:57.8872729Z               "line": 1080
2026-06-21T23:42:57.8872814Z             },
2026-06-21T23:42:57.8872895Z             {
2026-06-21T23:42:57.8873015Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:42:57.8873100Z               "line": 1845
2026-06-21T23:42:57.8873181Z             },
2026-06-21T23:42:57.8873268Z             {
2026-06-21T23:42:57.8873392Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:42:57.8873472Z               "line": 2122
2026-06-21T23:42:57.8873555Z             },
2026-06-21T23:42:57.8873640Z             {
2026-06-21T23:42:57.8873749Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:42:57.8873840Z               "line": 2253
2026-06-21T23:42:57.8874026Z             },
2026-06-21T23:42:57.8874116Z             {
2026-06-21T23:42:57.8874231Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:42:57.8874321Z               "line": 2301
2026-06-21T23:42:57.8874407Z             },
2026-06-21T23:42:57.8874479Z             {
2026-06-21T23:42:57.8874598Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T23:42:57.8874683Z               "line": 46
2026-06-21T23:42:57.8874765Z             },
2026-06-21T23:42:57.8874852Z             {
2026-06-21T23:42:57.8874965Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T23:42:57.8875054Z               "line": 200
2026-06-21T23:42:57.8875227Z             },
2026-06-21T23:42:57.8875312Z             {
2026-06-21T23:42:57.8875422Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T23:42:57.8875503Z               "line": 132
2026-06-21T23:42:57.8875589Z             },
2026-06-21T23:42:57.8875674Z             {
2026-06-21T23:42:57.8875795Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T23:42:57.8875885Z               "line": 137
2026-06-21T23:42:57.8875970Z             },
2026-06-21T23:42:57.8876051Z             {
2026-06-21T23:42:57.8876162Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T23:42:57.8876246Z               "line": 183
2026-06-21T23:42:57.8876327Z             }
2026-06-21T23:42:57.8876409Z           ]
2026-06-21T23:42:57.8876491Z         },
2026-06-21T23:42:57.8876580Z         "int": {
2026-06-21T23:42:57.8876675Z           "complete": true,
2026-06-21T23:42:57.8876767Z           "evidence": [
2026-06-21T23:42:57.8876858Z             {
2026-06-21T23:42:57.8876990Z               "path": "crates/spt-daemon/tests/idempotent.rs",
2026-06-21T23:42:57.8877078Z               "line": 27
2026-06-21T23:42:57.8877163Z             },
2026-06-21T23:42:57.8877247Z             {
2026-06-21T23:42:57.8877371Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-21T23:42:57.8877466Z               "line": 148
2026-06-21T23:42:57.8877550Z             },
2026-06-21T23:42:57.8877631Z             {
2026-06-21T23:42:57.8877755Z               "path": "crates/spt-daemon/tests/netstream.rs",
2026-06-21T23:42:57.8877847Z               "line": 200
2026-06-21T23:42:57.8877926Z             }
2026-06-21T23:42:57.8878012Z           ]
2026-06-21T23:42:57.8878094Z         },
2026-06-21T23:42:57.8878180Z         "unit": {
2026-06-21T23:42:57.8878260Z           "complete": true,
2026-06-21T23:42:57.8878351Z           "evidence": [
2026-06-21T23:42:57.8878432Z             {
2026-06-21T23:42:57.8878551Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T23:42:57.8878647Z               "line": 366
2026-06-21T23:42:57.8878733Z             },
2026-06-21T23:42:57.8878814Z             {
2026-06-21T23:42:57.8878928Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T23:42:57.8879090Z               "line": 398
2026-06-21T23:42:57.8879167Z             },
2026-06-21T23:42:57.8879252Z             {
2026-06-21T23:42:57.8879368Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-21T23:42:57.8879456Z               "line": 419
2026-06-21T23:42:57.8879538Z             },
2026-06-21T23:42:57.8879621Z             {
2026-06-21T23:42:57.8879743Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T23:42:57.8879829Z               "line": 631
2026-06-21T23:42:57.8879921Z             },
2026-06-21T23:42:57.8880007Z             {
2026-06-21T23:42:57.8880124Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-21T23:42:57.8880218Z               "line": 289
2026-06-21T23:42:57.8880295Z             },
2026-06-21T23:42:57.8880385Z             {
2026-06-21T23:42:57.8880493Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-21T23:42:57.8880575Z               "line": 230
2026-06-21T23:42:57.8880670Z             },
2026-06-21T23:42:57.8880751Z             {
2026-06-21T23:42:57.8880865Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T23:42:57.8881061Z               "line": 526
2026-06-21T23:42:57.8881146Z             },
2026-06-21T23:42:57.8881228Z             {
2026-06-21T23:42:57.8881337Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T23:42:57.8881422Z               "line": 556
2026-06-21T23:42:57.8881509Z             }
2026-06-21T23:42:57.8881586Z           ]
2026-06-21T23:42:57.8881661Z         }
2026-06-21T23:42:57.8881742Z       }
2026-06-21T23:42:57.8881833Z     },
2026-06-21T23:42:57.8881920Z     {
2026-06-21T23:42:57.8882043Z       "id": "REQ-HAZARD-ROLLBACK-STATE-COMPAT",
2026-06-21T23:42:57.8883722Z       "title": "A brain must not irreversibly migrate durable state before update ready-promotion: the readiness-gated auto-rollback (ADR-0018 Q7) spawns the N-1 binary against durable state the new brain may have written, so every pre-ready write must stay N-1-readable (schema migrations gated behind ready-promotion, or written N-1-tolerant/additive). Else the first in-place schema migration silently bricks rollback (KNOWN-HAZARDS 6.8). Free now — a 2026-06-09 audit confirmed zero state-migration code exists; unmintable retroactively once a migration ships.",
2026-06-21T23:42:57.8883928Z       "requiredStages": [
2026-06-21T23:42:57.8884013Z         "doc",
2026-06-21T23:42:57.8884095Z         "impl",
2026-06-21T23:42:57.8884185Z         "unit"
2026-06-21T23:42:57.8884266Z       ],
2026-06-21T23:42:57.8884357Z       "stages": {
2026-06-21T23:42:57.8884444Z         "doc": {
2026-06-21T23:42:57.8884534Z           "complete": true,
2026-06-21T23:42:57.8884624Z           "evidence": [
2026-06-21T23:42:57.8884705Z             {
2026-06-21T23:42:57.8884811Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T23:42:57.8884910Z               "line": 314
2026-06-21T23:42:57.8884996Z             }
2026-06-21T23:42:57.8885083Z           ]
2026-06-21T23:42:57.8885163Z         },
2026-06-21T23:42:57.8885248Z         "impl": {
2026-06-21T23:42:57.8885345Z           "complete": true,
2026-06-21T23:42:57.8885440Z           "evidence": [
2026-06-21T23:42:57.8885534Z             {
2026-06-21T23:42:57.8885681Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-21T23:42:57.8885773Z               "line": 33
2026-06-21T23:42:57.8885849Z             },
2026-06-21T23:42:57.8885938Z             {
2026-06-21T23:42:57.8886068Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-21T23:42:57.8886164Z               "line": 39
2026-06-21T23:42:57.8886249Z             }
2026-06-21T23:42:57.8886340Z           ]
2026-06-21T23:42:57.8886421Z         },
2026-06-21T23:42:57.8886507Z         "int": {
2026-06-21T23:42:57.8886611Z           "complete": false,
2026-06-21T23:42:57.8886707Z           "evidence": []
2026-06-21T23:42:57.8886793Z         },
2026-06-21T23:42:57.8886878Z         "unit": {
2026-06-21T23:42:57.8886974Z           "complete": true,
2026-06-21T23:42:57.8887065Z           "evidence": [
2026-06-21T23:42:57.8887150Z             {
2026-06-21T23:42:57.8887279Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-21T23:42:57.8887375Z               "line": 95
2026-06-21T23:42:57.8887455Z             }
2026-06-21T23:42:57.8887541Z           ]
2026-06-21T23:42:57.8887633Z         }
2026-06-21T23:42:57.8887713Z       }
2026-06-21T23:42:57.8887793Z     },
2026-06-21T23:42:57.8887884Z     {
2026-06-21T23:42:57.8887983Z       "id": "REQ-HAZARD-ROSTER-GHOST",
2026-06-21T23:42:57.8890452Z       "title": "A LOCAL subnet roster entry whose backing perch is erased does NOT keep advertising Active (no phantom perch-less endpoint). `api session-end <id> --erase` removes the perch (owlery dir gone) but the subnet roster (identity/registry/<subnet>.json) keeps the endpoint's instance row ACTIVE with no backing perch; `endpoint stop` says 'address unregistered' yet the line persists; no CLI verb forgets a roster entry, and a hand-edit is re-added by the single-writer daemon advertiser. FIX: daemon-side self-heal — the advertiser DROPS/forgets a LOCAL roster entry whose backing perch no longer exists (stops advertising it Active), and/or a `forget`/evict verb; verify whether the epoch lease eventually evicts it (slow-self-heal) vs a real leak and scope accordingly. doyle secondary finding (perri). (post-v0.10.0)",
2026-06-21T23:42:57.8890674Z       "requiredStages": [
2026-06-21T23:42:57.8890750Z         "impl",
2026-06-21T23:42:57.8890836Z         "unit"
2026-06-21T23:42:57.8890922Z       ],
2026-06-21T23:42:57.8891010Z       "stages": {
2026-06-21T23:42:57.8891087Z         "doc": {
2026-06-21T23:42:57.8891177Z           "complete": false,
2026-06-21T23:42:57.8891259Z           "evidence": []
2026-06-21T23:42:57.8891344Z         },
2026-06-21T23:42:57.8891550Z         "impl": {
2026-06-21T23:42:57.8891631Z           "complete": true,
2026-06-21T23:42:57.8891721Z           "evidence": [
2026-06-21T23:42:57.8891798Z             {
2026-06-21T23:42:57.8891936Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:42:57.8892016Z               "line": 488
2026-06-21T23:42:57.8892108Z             }
2026-06-21T23:42:57.8892189Z           ]
2026-06-21T23:42:57.8892275Z         },
2026-06-21T23:42:57.8892360Z         "int": {
2026-06-21T23:42:57.8892447Z           "complete": false,
2026-06-21T23:42:57.8892541Z           "evidence": []
2026-06-21T23:42:57.8892631Z         },
2026-06-21T23:42:57.8892713Z         "unit": {
2026-06-21T23:42:57.8892809Z           "complete": true,
2026-06-21T23:42:57.8892898Z           "evidence": [
2026-06-21T23:42:57.8892985Z             {
2026-06-21T23:42:57.8893115Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:42:57.8893208Z               "line": 1466
2026-06-21T23:42:57.8893294Z             }
2026-06-21T23:42:57.8893379Z           ]
2026-06-21T23:42:57.8893470Z         }
2026-06-21T23:42:57.8893553Z       }
2026-06-21T23:42:57.8893634Z     },
2026-06-21T23:42:57.8893715Z     {
2026-06-21T23:42:57.8893826Z       "id": "REQ-HAZARD-SELF-ELEVATE",
2026-06-21T23:42:57.8895987Z       "title": "Self-elevation (REQ-ELEVATE-1) re-runs the EXACT original invocation with the binary's ABSOLUTE exe path — never widening privilege scope, never adding/altering args, never via a PATH-resolved bare name, never via a shell-interpolated command string (argv-array only, no `sh -c`); the elevated child drops state back to the user (composes with the 5.7 de-elevation) and NEVER re-elevates (loop-safe: decide_elevation_path returns AlreadyElevated whenever the process is already Elevated, on every OS). The user's UAC/polkit/sudo prompt is the only consent gate — we never bypass it; the print-hint floor prints the absolute-path command too. The unprivileged parent never depends on (pipes/captures) the privileged child's stdout.",
2026-06-21T23:42:57.8896103Z       "requiredStages": [
2026-06-21T23:42:57.8896188Z         "unit"
2026-06-21T23:42:57.8896270Z       ],
2026-06-21T23:42:57.8896352Z       "stages": {
2026-06-21T23:42:57.8896447Z         "doc": {
2026-06-21T23:42:57.8896542Z           "complete": false,
2026-06-21T23:42:57.8896638Z           "evidence": []
2026-06-21T23:42:57.8896733Z         },
2026-06-21T23:42:57.8896828Z         "impl": {
2026-06-21T23:42:57.8896920Z           "complete": true,
2026-06-21T23:42:57.8897010Z           "evidence": [
2026-06-21T23:42:57.8897095Z             {
2026-06-21T23:42:57.8897196Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.8897286Z               "line": 3520
2026-06-21T23:42:57.8897367Z             },
2026-06-21T23:42:57.8897453Z             {
2026-06-21T23:42:57.8897559Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.8897644Z               "line": 3572
2026-06-21T23:42:57.8897730Z             },
2026-06-21T23:42:57.8897820Z             {
2026-06-21T23:42:57.8897930Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.8898025Z               "line": 3617
2026-06-21T23:42:57.8898106Z             },
2026-06-21T23:42:57.8898188Z             {
2026-06-21T23:42:57.8898297Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T23:42:57.8898472Z               "line": 92
2026-06-21T23:42:57.8898558Z             },
2026-06-21T23:42:57.8898642Z             {
2026-06-21T23:42:57.8898755Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T23:42:57.8898842Z               "line": 148
2026-06-21T23:42:57.8898928Z             },
2026-06-21T23:42:57.8899099Z             {
2026-06-21T23:42:57.8899210Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T23:42:57.8899300Z               "line": 192
2026-06-21T23:42:57.8899389Z             },
2026-06-21T23:42:57.8899477Z             {
2026-06-21T23:42:57.8899581Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T23:42:57.8899671Z               "line": 200
2026-06-21T23:42:57.8899858Z             },
2026-06-21T23:42:57.8899953Z             {
2026-06-21T23:42:57.8900053Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T23:42:57.8900144Z               "line": 211
2026-06-21T23:42:57.8900239Z             },
2026-06-21T23:42:57.8900320Z             {
2026-06-21T23:42:57.8900421Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T23:42:57.8900507Z               "line": 265
2026-06-21T23:42:57.8900596Z             },
2026-06-21T23:42:57.8900677Z             {
2026-06-21T23:42:57.8900784Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T23:42:57.8900882Z               "line": 279
2026-06-21T23:42:57.8900955Z             }
2026-06-21T23:42:57.8901036Z           ]
2026-06-21T23:42:57.8901122Z         },
2026-06-21T23:42:57.8901211Z         "int": {
2026-06-21T23:42:57.8901301Z           "complete": false,
2026-06-21T23:42:57.8901397Z           "evidence": []
2026-06-21T23:42:57.8901482Z         },
2026-06-21T23:42:57.8901571Z         "unit": {
2026-06-21T23:42:57.8901666Z           "complete": true,
2026-06-21T23:42:57.8901752Z           "evidence": [
2026-06-21T23:42:57.8901843Z             {
2026-06-21T23:42:57.8901942Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T23:42:57.8902038Z               "line": 419
2026-06-21T23:42:57.8902129Z             },
2026-06-21T23:42:57.8902210Z             {
2026-06-21T23:42:57.8902319Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T23:42:57.8902406Z               "line": 470
2026-06-21T23:42:57.8902487Z             },
2026-06-21T23:42:57.8902576Z             {
2026-06-21T23:42:57.8902682Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T23:42:57.8902777Z               "line": 499
2026-06-21T23:42:57.8902858Z             },
2026-06-21T23:42:57.8902944Z             {
2026-06-21T23:42:57.8903054Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T23:42:57.8903148Z               "line": 526
2026-06-21T23:42:57.8903235Z             }
2026-06-21T23:42:57.8903312Z           ]
2026-06-21T23:42:57.8903402Z         }
2026-06-21T23:42:57.8903487Z       }
2026-06-21T23:42:57.8903578Z     },
2026-06-21T23:42:57.8903656Z     {
2026-06-21T23:42:57.8903764Z       "id": "REQ-HAZARD-SINGLE-PATH-SOURCE",
2026-06-21T23:42:57.8903949Z       "title": "Single path/registry source of truth; no layout ambiguity (6.1)",
2026-06-21T23:42:57.8904058Z       "requiredStages": [
2026-06-21T23:42:57.8904142Z         "impl",
2026-06-21T23:42:57.8904227Z         "unit"
2026-06-21T23:42:57.8904319Z       ],
2026-06-21T23:42:57.8904405Z       "stages": {
2026-06-21T23:42:57.8904490Z         "doc": {
2026-06-21T23:42:57.8904571Z           "complete": false,
2026-06-21T23:42:57.8904667Z           "evidence": []
2026-06-21T23:42:57.8904757Z         },
2026-06-21T23:42:57.8904838Z         "impl": {
2026-06-21T23:42:57.8904939Z           "complete": true,
2026-06-21T23:42:57.8905029Z           "evidence": [
2026-06-21T23:42:57.8905114Z             {
2026-06-21T23:42:57.8905244Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T23:42:57.8905348Z               "line": 62
2026-06-21T23:42:57.8905434Z             },
2026-06-21T23:42:57.8905515Z             {
2026-06-21T23:42:57.8905644Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T23:42:57.8905840Z               "line": 71
2026-06-21T23:42:57.8905936Z             },
2026-06-21T23:42:57.8906020Z             {
2026-06-21T23:42:57.8906145Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T23:42:57.8906237Z               "line": 80
2026-06-21T23:42:57.8906320Z             },
2026-06-21T23:42:57.8906412Z             {
2026-06-21T23:42:57.8906528Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T23:42:57.8906612Z               "line": 88
2026-06-21T23:42:57.8906697Z             },
2026-06-21T23:42:57.8906782Z             {
2026-06-21T23:42:57.8906907Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:42:57.8907054Z               "line": 33
2026-06-21T23:42:57.8907140Z             },
2026-06-21T23:42:57.8907217Z             {
2026-06-21T23:42:57.8907335Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:42:57.8907431Z               "line": 65
2026-06-21T23:42:57.8907509Z             },
2026-06-21T23:42:57.8907594Z             {
2026-06-21T23:42:57.8907708Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:42:57.8907794Z               "line": 74
2026-06-21T23:42:57.8907884Z             },
2026-06-21T23:42:57.8907965Z             {
2026-06-21T23:42:57.8908070Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:42:57.8908148Z               "line": 93
2026-06-21T23:42:57.8908232Z             },
2026-06-21T23:42:57.8908318Z             {
2026-06-21T23:42:57.8908434Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:42:57.8908519Z               "line": 102
2026-06-21T23:42:57.8908618Z             },
2026-06-21T23:42:57.8908704Z             {
2026-06-21T23:42:57.8908815Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:42:57.8908914Z               "line": 111
2026-06-21T23:42:57.8909075Z             },
2026-06-21T23:42:57.8909160Z             {
2026-06-21T23:42:57.8909264Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:42:57.8909364Z               "line": 122
2026-06-21T23:42:57.8909445Z             },
2026-06-21T23:42:57.8909531Z             {
2026-06-21T23:42:57.8909640Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:42:57.8909722Z               "line": 140
2026-06-21T23:42:57.8909808Z             },
2026-06-21T23:42:57.8909893Z             {
2026-06-21T23:42:57.8910007Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:42:57.8910094Z               "line": 149
2026-06-21T23:42:57.8910184Z             },
2026-06-21T23:42:57.8910269Z             {
2026-06-21T23:42:57.8910371Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:42:57.8910461Z               "line": 158
2026-06-21T23:42:57.8910546Z             },
2026-06-21T23:42:57.8910627Z             {
2026-06-21T23:42:57.8910733Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:42:57.8910823Z               "line": 169
2026-06-21T23:42:57.8910904Z             },
2026-06-21T23:42:57.8910986Z             {
2026-06-21T23:42:57.8911099Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:42:57.8911181Z               "line": 177
2026-06-21T23:42:57.8911267Z             },
2026-06-21T23:42:57.8911348Z             {
2026-06-21T23:42:57.8911457Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:42:57.8911543Z               "line": 186
2026-06-21T23:42:57.8911625Z             },
2026-06-21T23:42:57.8911711Z             {
2026-06-21T23:42:57.8911814Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:42:57.8911899Z               "line": 195
2026-06-21T23:42:57.8911990Z             },
2026-06-21T23:42:57.8912065Z             {
2026-06-21T23:42:57.8912187Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:42:57.8912279Z               "line": 204
2026-06-21T23:42:57.8912365Z             },
2026-06-21T23:42:57.8912451Z             {
2026-06-21T23:42:57.8912559Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:42:57.8912647Z               "line": 216
2026-06-21T23:42:57.8912836Z             },
2026-06-21T23:42:57.8912918Z             {
2026-06-21T23:42:57.8913027Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:42:57.8913122Z               "line": 223
2026-06-21T23:42:57.8913213Z             },
2026-06-21T23:42:57.8913300Z             {
2026-06-21T23:42:57.8913418Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:42:57.8913514Z               "line": 232
2026-06-21T23:42:57.8913596Z             },
2026-06-21T23:42:57.8913680Z             {
2026-06-21T23:42:57.8913800Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:42:57.8916571Z               "line": 239
2026-06-21T23:42:57.8916807Z             },
2026-06-21T23:42:57.8916895Z             {
2026-06-21T23:42:57.8917025Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:42:57.8917121Z               "line": 306
2026-06-21T23:42:57.8917205Z             },
2026-06-21T23:42:57.8917295Z             {
2026-06-21T23:42:57.8917424Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:42:57.8917516Z               "line": 318
2026-06-21T23:42:57.8917600Z             },
2026-06-21T23:42:57.8917681Z             {
2026-06-21T23:42:57.8917806Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:42:57.8917895Z               "line": 405
2026-06-21T23:42:57.8917981Z             }
2026-06-21T23:42:57.8918069Z           ]
2026-06-21T23:42:57.8918154Z         },
2026-06-21T23:42:57.8918244Z         "int": {
2026-06-21T23:42:57.8918335Z           "complete": false,
2026-06-21T23:42:57.8918430Z           "evidence": []
2026-06-21T23:42:57.8918511Z         },
2026-06-21T23:42:57.8918606Z         "unit": {
2026-06-21T23:42:57.8918703Z           "complete": true,
2026-06-21T23:42:57.8918792Z           "evidence": [
2026-06-21T23:42:57.8918878Z             {
2026-06-21T23:42:57.8919074Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:42:57.8919164Z               "line": 487
2026-06-21T23:42:57.8919255Z             },
2026-06-21T23:42:57.8919342Z             {
2026-06-21T23:42:57.8919455Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:42:57.8919544Z               "line": 528
2026-06-21T23:42:57.8919630Z             },
2026-06-21T23:42:57.8919711Z             {
2026-06-21T23:42:57.8919834Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:42:57.8919919Z               "line": 541
2026-06-21T23:42:57.8920005Z             },
2026-06-21T23:42:57.8920091Z             {
2026-06-21T23:42:57.8920200Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:42:57.8920291Z               "line": 627
2026-06-21T23:42:57.8920382Z             }
2026-06-21T23:42:57.8920472Z           ]
2026-06-21T23:42:57.8920553Z         }
2026-06-21T23:42:57.8920644Z       }
2026-06-21T23:42:57.8920730Z     },
2026-06-21T23:42:57.8920811Z     {
2026-06-21T23:42:57.8920922Z       "id": "REQ-HAZARD-SOFT-CLEANUP",
2026-06-21T23:42:57.8921116Z       "title": "Soft-cleanup preserves state, removes only the ready marker (6.2)",
2026-06-21T23:42:57.8921221Z       "requiredStages": [
2026-06-21T23:42:57.8921307Z         "impl",
2026-06-21T23:42:57.8921393Z         "unit"
2026-06-21T23:42:57.8921478Z       ],
2026-06-21T23:42:57.8921561Z       "stages": {
2026-06-21T23:42:57.8921645Z         "doc": {
2026-06-21T23:42:57.8921731Z           "complete": false,
2026-06-21T23:42:57.8921827Z           "evidence": []
2026-06-21T23:42:57.8921909Z         },
2026-06-21T23:42:57.8921998Z         "impl": {
2026-06-21T23:42:57.8922094Z           "complete": true,
2026-06-21T23:42:57.8922170Z           "evidence": [
2026-06-21T23:42:57.8922261Z             {
2026-06-21T23:42:57.8922384Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T23:42:57.8922474Z               "line": 175
2026-06-21T23:42:57.8922560Z             },
2026-06-21T23:42:57.8922653Z             {
2026-06-21T23:42:57.8922767Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:42:57.8922854Z               "line": 171
2026-06-21T23:42:57.8923072Z             }
2026-06-21T23:42:57.8923154Z           ]
2026-06-21T23:42:57.8923240Z         },
2026-06-21T23:42:57.8923320Z         "int": {
2026-06-21T23:42:57.8923420Z           "complete": false,
2026-06-21T23:42:57.8923502Z           "evidence": []
2026-06-21T23:42:57.8923592Z         },
2026-06-21T23:42:57.8923683Z         "unit": {
2026-06-21T23:42:57.8923768Z           "complete": true,
2026-06-21T23:42:57.8923860Z           "evidence": [
2026-06-21T23:42:57.8923940Z             {
2026-06-21T23:42:57.8924064Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T23:42:57.8924160Z               "line": 297
2026-06-21T23:42:57.8924345Z             },
2026-06-21T23:42:57.8924442Z             {
2026-06-21T23:42:57.8924560Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:42:57.8924646Z               "line": 836
2026-06-21T23:42:57.8924733Z             },
2026-06-21T23:42:57.8924823Z             {
2026-06-21T23:42:57.8924940Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:42:57.8925017Z               "line": 849
2026-06-21T23:42:57.8925107Z             }
2026-06-21T23:42:57.8925178Z           ]
2026-06-21T23:42:57.8925267Z         }
2026-06-21T23:42:57.8925343Z       }
2026-06-21T23:42:57.8925424Z     },
2026-06-21T23:42:57.8925512Z     {
2026-06-21T23:42:57.8925624Z       "id": "REQ-HAZARD-STALE-INDEX-LOCK",
2026-06-21T23:42:57.8925759Z       "title": "Sweep stale lockfiles on daemon boot (1.3)",
2026-06-21T23:42:57.8925855Z       "requiredStages": [
2026-06-21T23:42:57.8925934Z         "impl",
2026-06-21T23:42:57.8926016Z         "unit"
2026-06-21T23:42:57.8926102Z       ],
2026-06-21T23:42:57.8926188Z       "stages": {
2026-06-21T23:42:57.8926273Z         "doc": {
2026-06-21T23:42:57.8926355Z           "complete": false,
2026-06-21T23:42:57.8926441Z           "evidence": []
2026-06-21T23:42:57.8926527Z         },
2026-06-21T23:42:57.8926612Z         "impl": {
2026-06-21T23:42:57.8926699Z           "complete": true,
2026-06-21T23:42:57.8926788Z           "evidence": [
2026-06-21T23:42:57.8926869Z             {
2026-06-21T23:42:57.8926985Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:42:57.8927061Z               "line": 116
2026-06-21T23:42:57.8927145Z             },
2026-06-21T23:42:57.8927227Z             {
2026-06-21T23:42:57.8927357Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T23:42:57.8927451Z               "line": 507
2026-06-21T23:42:57.8927527Z             }
2026-06-21T23:42:57.8927605Z           ]
2026-06-21T23:42:57.8927686Z         },
2026-06-21T23:42:57.8927775Z         "int": {
2026-06-21T23:42:57.8927869Z           "complete": false,
2026-06-21T23:42:57.8927965Z           "evidence": []
2026-06-21T23:42:57.8928052Z         },
2026-06-21T23:42:57.8928136Z         "unit": {
2026-06-21T23:42:57.8928231Z           "complete": true,
2026-06-21T23:42:57.8928314Z           "evidence": [
2026-06-21T23:42:57.8928400Z             {
2026-06-21T23:42:57.8928518Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T23:42:57.8928605Z               "line": 541
2026-06-21T23:42:57.8928685Z             }
2026-06-21T23:42:57.8928766Z           ]
2026-06-21T23:42:57.8928852Z         }
2026-06-21T23:42:57.8928929Z       }
2026-06-21T23:42:57.8929100Z     },
2026-06-21T23:42:57.8929181Z     {
2026-06-21T23:42:57.8929306Z       "id": "REQ-HAZARD-STALE-SIGNOFF-SENTINEL",
2026-06-21T23:42:57.8929505Z       "title": "Stale signoff sentinel does not kill a fresh start (3.2)",
2026-06-21T23:42:57.8929592Z       "requiredStages": [
2026-06-21T23:42:57.8929672Z         "impl",
2026-06-21T23:42:57.8929757Z         "unit"
2026-06-21T23:42:57.8929839Z       ],
2026-06-21T23:42:57.8929931Z       "stages": {
2026-06-21T23:42:57.8930019Z         "doc": {
2026-06-21T23:42:57.8930109Z           "complete": false,
2026-06-21T23:42:57.8930195Z           "evidence": []
2026-06-21T23:42:57.8930281Z         },
2026-06-21T23:42:57.8930365Z         "impl": {
2026-06-21T23:42:57.8930570Z           "complete": true,
2026-06-21T23:42:57.8930656Z           "evidence": [
2026-06-21T23:42:57.8930741Z             {
2026-06-21T23:42:57.8930861Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T23:42:57.8930947Z               "line": 552
2026-06-21T23:42:57.8931032Z             },
2026-06-21T23:42:57.8931118Z             {
2026-06-21T23:42:57.8931228Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T23:42:57.8931314Z               "line": 28
2026-06-21T23:42:57.8931399Z             }
2026-06-21T23:42:57.8931477Z           ]
2026-06-21T23:42:57.8931562Z         },
2026-06-21T23:42:57.8931647Z         "int": {
2026-06-21T23:42:57.8931825Z           "complete": false,
2026-06-21T23:42:57.8931910Z           "evidence": []
2026-06-21T23:42:57.8931995Z         },
2026-06-21T23:42:57.8932082Z         "unit": {
2026-06-21T23:42:57.8932177Z           "complete": true,
2026-06-21T23:42:57.8932262Z           "evidence": [
2026-06-21T23:42:57.8932344Z             {
2026-06-21T23:42:57.8932460Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T23:42:57.8932544Z               "line": 229
2026-06-21T23:42:57.8932620Z             }
2026-06-21T23:42:57.8932707Z           ]
2026-06-21T23:42:57.8932789Z         }
2026-06-21T23:42:57.8932863Z       }
2026-06-21T23:42:57.8932949Z     },
2026-06-21T23:42:57.8933024Z     {
2026-06-21T23:42:57.8933134Z       "id": "REQ-HAZARD-STDIN-SESSION-ID",
2026-06-21T23:42:57.8933266Z       "title": "Stdin session_id precedence over env (2.2)",
2026-06-21T23:42:57.8933365Z       "requiredStages": [],
2026-06-21T23:42:57.8933452Z       "stages": {
2026-06-21T23:42:57.8933537Z         "doc": {
2026-06-21T23:42:57.8933636Z           "complete": false,
2026-06-21T23:42:57.8933719Z           "evidence": []
2026-06-21T23:42:57.8933800Z         },
2026-06-21T23:42:57.8933890Z         "impl": {
2026-06-21T23:42:57.8933975Z           "complete": false,
2026-06-21T23:42:57.8934063Z           "evidence": []
2026-06-21T23:42:57.8934143Z         },
2026-06-21T23:42:57.8934223Z         "int": {
2026-06-21T23:42:57.8934305Z           "complete": false,
2026-06-21T23:42:57.8934391Z           "evidence": []
2026-06-21T23:42:57.8934477Z         },
2026-06-21T23:42:57.8934562Z         "unit": {
2026-06-21T23:42:57.8934648Z           "complete": false,
2026-06-21T23:42:57.8934734Z           "evidence": []
2026-06-21T23:42:57.8934820Z         }
2026-06-21T23:42:57.8934901Z       }
2026-06-21T23:42:57.8934988Z     },
2026-06-21T23:42:57.8935064Z     {
2026-06-21T23:42:57.8935177Z       "id": "REQ-HAZARD-SUBPROCESS-TIMEOUT",
2026-06-21T23:42:57.8935322Z       "title": "Every harness/git subprocess has a timeout (5.3)",
2026-06-21T23:42:57.8935412Z       "requiredStages": [
2026-06-21T23:42:57.8935491Z         "impl",
2026-06-21T23:42:57.8935572Z         "unit"
2026-06-21T23:42:57.8935658Z       ],
2026-06-21T23:42:57.8935747Z       "stages": {
2026-06-21T23:42:57.8935837Z         "doc": {
2026-06-21T23:42:57.8935932Z           "complete": false,
2026-06-21T23:42:57.8936029Z           "evidence": []
2026-06-21T23:42:57.8936114Z         },
2026-06-21T23:42:57.8936199Z         "impl": {
2026-06-21T23:42:57.8936286Z           "complete": true,
2026-06-21T23:42:57.8936376Z           "evidence": [
2026-06-21T23:42:57.8936461Z             {
2026-06-21T23:42:57.8936566Z               "path": "crates/spt-live/src/turn.rs",
2026-06-21T23:42:57.8936657Z               "line": 19
2026-06-21T23:42:57.8936738Z             },
2026-06-21T23:42:57.8936823Z             {
2026-06-21T23:42:57.8936948Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T23:42:57.8937029Z               "line": 463
2026-06-21T23:42:57.8937119Z             },
2026-06-21T23:42:57.8937205Z             {
2026-06-21T23:42:57.8937325Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T23:42:57.8937411Z               "line": 499
2026-06-21T23:42:57.8937496Z             },
2026-06-21T23:42:57.8937583Z             {
2026-06-21T23:42:57.8937682Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T23:42:57.8937855Z               "line": 547
2026-06-21T23:42:57.8937936Z             },
2026-06-21T23:42:57.8938020Z             {
2026-06-21T23:42:57.8938126Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T23:42:57.8938208Z               "line": 15
2026-06-21T23:42:57.8938293Z             },
2026-06-21T23:42:57.8938377Z             {
2026-06-21T23:42:57.8938496Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T23:42:57.8938583Z               "line": 48
2026-06-21T23:42:57.8938664Z             },
2026-06-21T23:42:57.8938758Z             {
2026-06-21T23:42:57.8938869Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T23:42:57.8939121Z               "line": 119
2026-06-21T23:42:57.8939213Z             },
2026-06-21T23:42:57.8939294Z             {
2026-06-21T23:42:57.8939402Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.8939494Z               "line": 3948
2026-06-21T23:42:57.8939584Z             }
2026-06-21T23:42:57.8939669Z           ]
2026-06-21T23:42:57.8939765Z         },
2026-06-21T23:42:57.8939861Z         "int": {
2026-06-21T23:42:57.8939956Z           "complete": false,
2026-06-21T23:42:57.8940046Z           "evidence": []
2026-06-21T23:42:57.8940147Z         },
2026-06-21T23:42:57.8940270Z         "unit": {
2026-06-21T23:42:57.8940351Z           "complete": true,
2026-06-21T23:42:57.8940438Z           "evidence": [
2026-06-21T23:42:57.8940524Z             {
2026-06-21T23:42:57.8940641Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T23:42:57.8940732Z               "line": 765
2026-06-21T23:42:57.8940818Z             },
2026-06-21T23:42:57.8940897Z             {
2026-06-21T23:42:57.8941001Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T23:42:57.8941082Z               "line": 165
2026-06-21T23:42:57.8941164Z             },
2026-06-21T23:42:57.8941240Z             {
2026-06-21T23:42:57.8941349Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-21T23:42:57.8941460Z               "line": 175
2026-06-21T23:42:57.8941545Z             }
2026-06-21T23:42:57.8941611Z           ]
2026-06-21T23:42:57.8941693Z         }
2026-06-21T23:42:57.8941784Z       }
2026-06-21T23:42:57.8941888Z     },
2026-06-21T23:42:57.8941988Z     {
2026-06-21T23:42:57.8942099Z       "id": "REQ-HAZARD-SUDO-SECURE-PATH",
2026-06-21T23:42:57.8943020Z       "title": "Elevation guidance on Unix names the binary's ABSOLUTE path under sudo (a user-local install ~/.local/bin · ~/.cargo/bin is not on sudo's secure_path, so bare `sudo spt` dies 'command not found'); gated commands auto-elevate on an interactive TTY, else print the runnable hint (5.10)",
2026-06-21T23:42:57.8943118Z       "requiredStages": [
2026-06-21T23:42:57.8943209Z         "impl",
2026-06-21T23:42:57.8943291Z         "unit"
2026-06-21T23:42:57.8943372Z       ],
2026-06-21T23:42:57.8943461Z       "stages": {
2026-06-21T23:42:57.8943546Z         "doc": {
2026-06-21T23:42:57.8943647Z           "complete": false,
2026-06-21T23:42:57.8943727Z           "evidence": []
2026-06-21T23:42:57.8943816Z         },
2026-06-21T23:42:57.8943906Z         "impl": {
2026-06-21T23:42:57.8943998Z           "complete": true,
2026-06-21T23:42:57.8944088Z           "evidence": [
2026-06-21T23:42:57.8944173Z             {
2026-06-21T23:42:57.8944299Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T23:42:57.8944389Z               "line": 192
2026-06-21T23:42:57.8944474Z             },
2026-06-21T23:42:57.8944550Z             {
2026-06-21T23:42:57.8944660Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T23:42:57.8944741Z               "line": 279
2026-06-21T23:42:57.8944831Z             }
2026-06-21T23:42:57.8944923Z           ]
2026-06-21T23:42:57.8945003Z         },
2026-06-21T23:42:57.8945080Z         "int": {
2026-06-21T23:42:57.8945179Z           "complete": false,
2026-06-21T23:42:57.8945262Z           "evidence": []
2026-06-21T23:42:57.8945346Z         },
2026-06-21T23:42:57.8945423Z         "unit": {
2026-06-21T23:42:57.8945633Z           "complete": true,
2026-06-21T23:42:57.8945723Z           "evidence": [
2026-06-21T23:42:57.8945804Z             {
2026-06-21T23:42:57.8945915Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T23:42:57.8946004Z               "line": 470
2026-06-21T23:42:57.8946099Z             },
2026-06-21T23:42:57.8946184Z             {
2026-06-21T23:42:57.8946298Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T23:42:57.8946383Z               "line": 526
2026-06-21T23:42:57.8946468Z             }
2026-06-21T23:42:57.8946550Z           ]
2026-06-21T23:42:57.8946636Z         }
2026-06-21T23:42:57.8946712Z       }
2026-06-21T23:42:57.8946889Z     },
2026-06-21T23:42:57.8946975Z     {
2026-06-21T23:42:57.8947088Z       "id": "REQ-HAZARD-TEMPLATE-ARGV-FILL",
2026-06-21T23:42:57.8950931Z       "title": "Command-template substitution fills argv ELEMENTS, not a re-tokenized string: spt-core currently `fill_template`s {key} values INTO the command STRING and THEN `tokenize`s the filled string (runtime.rs:94/122), so a multi-word {key} value whitespace-SPLITS into multiple argv tokens unless the adapter hand-quotes the placeholder, and a value containing a `\"` (or `;`) injects/breaks tokenization (shell-injection-adjacent). A filled value MUST become exactly ONE argv element regardless of spaces/quotes in the value. Fix: tokenize the TEMPLATE into argv FIRST, then `fill_template` EACH token, so a `{key}` slot resolves to a single element and the value never participates in tokenization (no whitespace-split, no quote/semicolon injection); preserve the missing-key / empty-command errors and `{{`/`}}` non-interpretation. perri's F-009 (v0.8.1 dogfood, argv-capture-confirmed): a multi-word `{psyche_prompt}` = \"PSYCHE REVIVAL time: epoch-ms:… incoming event: (none)\" arrived as argv[6..12] (7 stray tokens), the harness runner strict-parsed `--prompt` against the 2nd word, exited 2 within ~1s → phantom hosted perch. Applies to EVERY [session.<role>] template (psyche_init, extractor, notif, …); digest survives today only because its fills ({session_id}/{source}) are single-token.",
2026-06-21T23:42:57.8951056Z       "requiredStages": [
2026-06-21T23:42:57.8951145Z         "impl",
2026-06-21T23:42:57.8951221Z         "unit",
2026-06-21T23:42:57.8951306Z         "int"
2026-06-21T23:42:57.8951387Z       ],
2026-06-21T23:42:57.8951467Z       "stages": {
2026-06-21T23:42:57.8951556Z         "doc": {
2026-06-21T23:42:57.8951652Z           "complete": false,
2026-06-21T23:42:57.8951739Z           "evidence": []
2026-06-21T23:42:57.8951823Z         },
2026-06-21T23:42:57.8951904Z         "impl": {
2026-06-21T23:42:57.8952001Z           "complete": true,
2026-06-21T23:42:57.8952105Z           "evidence": [
2026-06-21T23:42:57.8952186Z             {
2026-06-21T23:42:57.8952311Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T23:42:57.8952406Z               "line": 116
2026-06-21T23:42:57.8952486Z             },
2026-06-21T23:42:57.8952568Z             {
2026-06-21T23:42:57.8952696Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T23:42:57.8952791Z               "line": 132
2026-06-21T23:42:57.8952868Z             },
2026-06-21T23:42:57.8952955Z             {
2026-06-21T23:42:57.8953083Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T23:42:57.8953168Z               "line": 434
2026-06-21T23:42:57.8953255Z             },
2026-06-21T23:42:57.8953349Z             {
2026-06-21T23:42:57.8953459Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T23:42:57.8953555Z               "line": 139
2026-06-21T23:42:57.8953637Z             },
2026-06-21T23:42:57.8953716Z             {
2026-06-21T23:42:57.8953832Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T23:42:57.8953918Z               "line": 326
2026-06-21T23:42:57.8954002Z             },
2026-06-21T23:42:57.8954083Z             {
2026-06-21T23:42:57.8954192Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T23:42:57.8954409Z               "line": 555
2026-06-21T23:42:57.8954496Z             }
2026-06-21T23:42:57.8954572Z           ]
2026-06-21T23:42:57.8954658Z         },
2026-06-21T23:42:57.8954748Z         "int": {
2026-06-21T23:42:57.8954829Z           "complete": true,
2026-06-21T23:42:57.8954915Z           "evidence": [
2026-06-21T23:42:57.8955001Z             {
2026-06-21T23:42:57.8955149Z               "path": "crates/spt/tests/livehost_nonresident_e2e.rs",
2026-06-21T23:42:57.8955239Z               "line": 32
2026-06-21T23:42:57.8955316Z             }
2026-06-21T23:42:57.8955401Z           ]
2026-06-21T23:42:57.8955483Z         },
2026-06-21T23:42:57.8955577Z         "unit": {
2026-06-21T23:42:57.8955764Z           "complete": true,
2026-06-21T23:42:57.8955855Z           "evidence": [
2026-06-21T23:42:57.8955940Z             {
2026-06-21T23:42:57.8956059Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T23:42:57.8956142Z               "line": 625
2026-06-21T23:42:57.8956221Z             },
2026-06-21T23:42:57.8956312Z             {
2026-06-21T23:42:57.8956423Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T23:42:57.8956518Z               "line": 646
2026-06-21T23:42:57.8956602Z             },
2026-06-21T23:42:57.8956692Z             {
2026-06-21T23:42:57.8956812Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T23:42:57.8956895Z               "line": 662
2026-06-21T23:42:57.8956990Z             },
2026-06-21T23:42:57.8957067Z             {
2026-06-21T23:42:57.8957182Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T23:42:57.8957272Z               "line": 680
2026-06-21T23:42:57.8957348Z             },
2026-06-21T23:42:57.8957444Z             {
2026-06-21T23:42:57.8957563Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T23:42:57.8957658Z               "line": 704
2026-06-21T23:42:57.8957740Z             }
2026-06-21T23:42:57.8957821Z           ]
2026-06-21T23:42:57.8957906Z         }
2026-06-21T23:42:57.8957992Z       }
2026-06-21T23:42:57.8958083Z     },
2026-06-21T23:42:57.8958168Z     {
2026-06-21T23:42:57.8958282Z       "id": "REQ-HAZARD-UNC-PATH-STRIP",
2026-06-21T23:42:57.8958435Z       "title": "Strip Windows UNC prefix on serialized paths (5.4)",
2026-06-21T23:42:57.8958536Z       "requiredStages": [
2026-06-21T23:42:57.8958616Z         "impl",
2026-06-21T23:42:57.8958704Z         "unit"
2026-06-21T23:42:57.8958788Z       ],
2026-06-21T23:42:57.8958874Z       "stages": {
2026-06-21T23:42:57.8959042Z         "doc": {
2026-06-21T23:42:57.8959136Z           "complete": false,
2026-06-21T23:42:57.8959218Z           "evidence": []
2026-06-21T23:42:57.8959304Z         },
2026-06-21T23:42:57.8959394Z         "impl": {
2026-06-21T23:42:57.8959488Z           "complete": true,
2026-06-21T23:42:57.8959578Z           "evidence": [
2026-06-21T23:42:57.8959669Z             {
2026-06-21T23:42:57.8959789Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T23:42:57.8959878Z               "line": 35
2026-06-21T23:42:57.8959956Z             }
2026-06-21T23:42:57.8960042Z           ]
2026-06-21T23:42:57.8960127Z         },
2026-06-21T23:42:57.8960212Z         "int": {
2026-06-21T23:42:57.8960304Z           "complete": false,
2026-06-21T23:42:57.8960385Z           "evidence": []
2026-06-21T23:42:57.8960480Z         },
2026-06-21T23:42:57.8960566Z         "unit": {
2026-06-21T23:42:57.8960661Z           "complete": true,
2026-06-21T23:42:57.8960757Z           "evidence": [
2026-06-21T23:42:57.8960832Z             {
2026-06-21T23:42:57.8960943Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-21T23:42:57.8961033Z               "line": 220
2026-06-21T23:42:57.8961119Z             }
2026-06-21T23:42:57.8961200Z           ]
2026-06-21T23:42:57.8961282Z         }
2026-06-21T23:42:57.8961381Z       }
2026-06-21T23:42:57.8961453Z     },
2026-06-21T23:42:57.8961534Z     {
2026-06-21T23:42:57.8961639Z       "id": "REQ-HAZARD-UNHOST-PSYCHE-REAP",
2026-06-21T23:42:57.8964805Z       "title": "On un-host, the detached `{id}-psyche` HARNESS PROCESS is reaped — not just its in-brain pulse-driver thread. Today stop_host (livehost.rs:203) trips the HostedLife stop flag + JOINS the driver thread, but the Psyche is a detached harness process (spawn_psyche → ManifestRuntime detached spawn, runtime.rs:341-356; its pid is untracked in HostedLife though stamped on the `{id}-psyche` perch, where residency-confirm already reads it). So endpoint-stop / mid-life agent-death / a B2/B5 offline-then-unhost leaves the psyche process ORPHANED, alive until the next daemon-stop (where Breap's job/group reaps the whole brain subtree). The Psyche STAYS a harness process by design (CONTEXT.md 97/203/251 — headless harness session, its own perch) — the fix does NOT move it in-brain; it SCOPED-kills the `{id}-psyche` pid on un-host (never machine-wide — shared box). Track the pid in HostedLife at host_one (cleanest) or read the `{id}-psyche` perch pid at stop_host. Composes with H3 (endpoint stop → offline → reconcile un-host → reap) and B2/B5 (the offline arms that trigger un-host). (v0.12.0)",
2026-06-21T23:42:57.8965108Z       "requiredStages": [
2026-06-21T23:42:57.8965195Z         "impl",
2026-06-21T23:42:57.8965279Z         "unit",
2026-06-21T23:42:57.8965365Z         "int"
2026-06-21T23:42:57.8965448Z       ],
2026-06-21T23:42:57.8965538Z       "stages": {
2026-06-21T23:42:57.8965622Z         "doc": {
2026-06-21T23:42:57.8965719Z           "complete": false,
2026-06-21T23:42:57.8965809Z           "evidence": []
2026-06-21T23:42:57.8965895Z         },
2026-06-21T23:42:57.8965990Z         "impl": {
2026-06-21T23:42:57.8966082Z           "complete": true,
2026-06-21T23:42:57.8966171Z           "evidence": [
2026-06-21T23:42:57.8966262Z             {
2026-06-21T23:42:57.8966387Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T23:42:57.8966481Z               "line": 202
2026-06-21T23:42:57.8966557Z             },
2026-06-21T23:42:57.8966644Z             {
2026-06-21T23:42:57.8966758Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T23:42:57.8966838Z               "line": 107
2026-06-21T23:42:57.8966925Z             },
2026-06-21T23:42:57.8967012Z             {
2026-06-21T23:42:57.8967129Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T23:42:57.8967215Z               "line": 138
2026-06-21T23:42:57.8967296Z             },
2026-06-21T23:42:57.8967381Z             {
2026-06-21T23:42:57.8967508Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T23:42:57.8967593Z               "line": 209
2026-06-21T23:42:57.8967675Z             },
2026-06-21T23:42:57.8967757Z             {
2026-06-21T23:42:57.8967870Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T23:42:57.8967966Z               "line": 246
2026-06-21T23:42:57.8968052Z             },
2026-06-21T23:42:57.8968132Z             {
2026-06-21T23:42:57.8968232Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T23:42:57.8968329Z               "line": 379
2026-06-21T23:42:57.8968410Z             }
2026-06-21T23:42:57.8968494Z           ]
2026-06-21T23:42:57.8968576Z         },
2026-06-21T23:42:57.8968657Z         "int": {
2026-06-21T23:42:57.8968757Z           "complete": true,
2026-06-21T23:42:57.8968852Z           "evidence": [
2026-06-21T23:42:57.8969024Z             {
2026-06-21T23:42:57.8969167Z               "path": "crates/spt/tests/unhost_psyche_reap_e2e.rs",
2026-06-21T23:42:57.8969254Z               "line": 17
2026-06-21T23:42:57.8969338Z             }
2026-06-21T23:42:57.8969425Z           ]
2026-06-21T23:42:57.8969501Z         },
2026-06-21T23:42:57.8969588Z         "unit": {
2026-06-21T23:42:57.8969686Z           "complete": true,
2026-06-21T23:42:57.8969778Z           "evidence": [
2026-06-21T23:42:57.8969859Z             {
2026-06-21T23:42:57.8970001Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:42:57.8970086Z               "line": 982
2026-06-21T23:42:57.8970172Z             }
2026-06-21T23:42:57.8970254Z           ]
2026-06-21T23:42:57.8970339Z         }
2026-06-21T23:42:57.8970530Z       }
2026-06-21T23:42:57.8970611Z     },
2026-06-21T23:42:57.8970687Z     {
2026-06-21T23:42:57.8970797Z       "id": "REQ-HAZARD-UPDATE-ROLLBACK",
2026-06-21T23:42:57.8971059Z       "title": "Self-update rejects version rollback; metadata expiry + adapter content signing (codex #5)",
2026-06-21T23:42:57.8971160Z       "requiredStages": [
2026-06-21T23:42:57.8971245Z         "impl",
2026-06-21T23:42:57.8971336Z         "unit"
2026-06-21T23:42:57.8971416Z       ],
2026-06-21T23:42:57.8971513Z       "stages": {
2026-06-21T23:42:57.8971593Z         "doc": {
2026-06-21T23:42:57.8971689Z           "complete": false,
2026-06-21T23:42:57.8971780Z           "evidence": []
2026-06-21T23:42:57.8971969Z         },
2026-06-21T23:42:57.8972065Z         "impl": {
2026-06-21T23:42:57.8972157Z           "complete": true,
2026-06-21T23:42:57.8972241Z           "evidence": [
2026-06-21T23:42:57.8972326Z             {
2026-06-21T23:42:57.8972451Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T23:42:57.8972540Z               "line": 405
2026-06-21T23:42:57.8972620Z             },
2026-06-21T23:42:57.8972715Z             {
2026-06-21T23:42:57.8972835Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:42:57.8972925Z               "line": 409
2026-06-21T23:42:57.8973005Z             },
2026-06-21T23:42:57.8973092Z             {
2026-06-21T23:42:57.8973211Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T23:42:57.8973296Z               "line": 156
2026-06-21T23:42:57.8973383Z             }
2026-06-21T23:42:57.8973469Z           ]
2026-06-21T23:42:57.8973550Z         },
2026-06-21T23:42:57.8973625Z         "int": {
2026-06-21T23:42:57.8973732Z           "complete": false,
2026-06-21T23:42:57.8973822Z           "evidence": []
2026-06-21T23:42:57.8973907Z         },
2026-06-21T23:42:57.8973988Z         "unit": {
2026-06-21T23:42:57.8974075Z           "complete": true,
2026-06-21T23:42:57.8974160Z           "evidence": [
2026-06-21T23:42:57.8974250Z             {
2026-06-21T23:42:57.8974375Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:42:57.8974465Z               "line": 865
2026-06-21T23:42:57.8974556Z             },
2026-06-21T23:42:57.8974652Z             {
2026-06-21T23:42:57.8974771Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:42:57.8974871Z               "line": 879
2026-06-21T23:42:57.8974947Z             },
2026-06-21T23:42:57.8975038Z             {
2026-06-21T23:42:57.8975147Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:42:57.8975241Z               "line": 898
2026-06-21T23:42:57.8975327Z             },
2026-06-21T23:42:57.8975407Z             {
2026-06-21T23:42:57.8975524Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:42:57.8975601Z               "line": 915
2026-06-21T23:42:57.8975693Z             },
2026-06-21T23:42:57.8975783Z             {
2026-06-21T23:42:57.8975911Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T23:42:57.8976012Z               "line": 441
2026-06-21T23:42:57.8976084Z             }
2026-06-21T23:42:57.8976163Z           ]
2026-06-21T23:42:57.8976250Z         }
2026-06-21T23:42:57.8976346Z       }
2026-06-21T23:42:57.8976436Z     },
2026-06-21T23:42:57.8976521Z     {
2026-06-21T23:42:57.8976642Z       "id": "REQ-HAZARD-VIEWER-CLOSE-DETACH",
2026-06-21T23:42:57.8986505Z       "title": "A VIEW is independent from the endpoint: closing the tab/window where `spt endpoint run` was invoked must detach ONLY the `spt rc` attach pump — the daemon-hosted harness keeps running and stays re-attachable via `spt rc <id>`. ROOT (Windows, v0.12.0 real-harness defect): the daemon never breaks away from the launching terminal's Job Object. Windows Terminal / VS Code place the launched shell AND every descendant into a Job Object with JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE; closing the tab drops the terminal's last job handle → the OS terminates every process still in that job. A child escapes only with CREATE_BREAKAWAY_FROM_JOB — used NOWHERE in the tree. Both daemon spawn paths (daemon.rs:707 detached_no_inherit = DETACHED_PROCESS|CREATE_NEW_PROCESS_GROUP|CREATE_NO_WINDOW; deelevate.rs:519 elevated = CREATE_NEW_CONSOLE|...) drop the CONSOLE but NOT job membership, so the daemon's freshly broker-spawned ConPTY harness subtree is reaped on tab-close. The ConPTY/pseudoconsole isolation itself is CORRECT (portable-pty builds the pseudoconsole in the daemon; no console signal / handle leak) — the leaking lifetime binding is the Job Object, not the console. FIX: add CREATE_BREAKAWAY_FROM_JOB to both daemon spawn paths AND pin each broker-spawned harness into a DAEMON-OWNED Job Object (mirror reap.rs/Breap) as backstop (survives even where a terminal sets SILENT_BREAKAWAY_OK=false). Unix: the daemon's own session detachment (new session, no controlling terminal) already keeps a closing terminal's SIGHUP off its children — verify, add a guard test, no code expected. FIX UPDATE (v0.12.1 L1.5, doyle re-scope operator-approved 2026-06-18): job-neutral daemon launch is now PRIMARY, breakaway DEMOTED to a fallback rung. ROOT reframed — the daemon INHERITS the terminal's Job because spawn_detached runs FROM the terminal-child CLI (DETACHED_PROCESS detaches the console, not the job); breakaway tried to claw back out but a job CAN deny it (the L1 finding). FIX: launch the cold-started daemon via a job-NEUTRAL creator so it is WmiPrvSE/Task-Scheduler-owned, OUTSIDE any terminal job from birth (why Task-Scheduler-autostarted daemons never had this bug). Launcher ladder (first-success-wins, daemon.rs spawn_detached → BOTH cold-start AND `spt daemon start`): (1) WMI Win32_Process.Create via ABSOLUTE powershell -EncodedCommand (KH 5.12 abs path; base64-UTF16LE dodges all quoting; success requires BOTH ReturnValue==0 AND a parsed ProcessId, else fall-through — never a silent launched), forwarding SPT_* env via a `cmd /c set … & start /b` wrapper because a WMI/scheduler child does NOT inherit transient shell env (verified — SPT_HOME would be lost, wrong universe); (2) schtasks one-shot (same env wrapper; best-effort fallback); (3) CREATE_BREAKAWAY_FROM_JOB (the L1 code, reordered below); (4) in-job last resort (logs DETACH_IN_JOB + tab-close caveat). detached_no_inherit (breakaway-then-in-job) is UNCHANGED for its other caller shellhost::launch_shell (a daemon-spawned shell is already job-neutral once the daemon is). The elevated deelevate path keeps its L1 breakaway for now (elevated-case WMI-reparent = FOLLOW-UP). (v0.12.1)",
2026-06-21T23:42:57.8986863Z       "requiredStages": [
2026-06-21T23:42:57.8986948Z         "doc",
2026-06-21T23:42:57.8987039Z         "impl",
2026-06-21T23:42:57.8987124Z         "unit",
2026-06-21T23:42:57.8987211Z         "int"
2026-06-21T23:42:57.8987296Z       ],
2026-06-21T23:42:57.8987386Z       "stages": {
2026-06-21T23:42:57.8987474Z         "doc": {
2026-06-21T23:42:57.8987564Z           "complete": true,
2026-06-21T23:42:57.8987649Z           "evidence": [
2026-06-21T23:42:57.8987735Z             {
2026-06-21T23:42:57.8987846Z               "path": "CONTEXT.md",
2026-06-21T23:42:57.8987935Z               "line": 420
2026-06-21T23:42:57.8988021Z             },
2026-06-21T23:42:57.8988108Z             {
2026-06-21T23:42:57.8988222Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T23:42:57.8988306Z               "line": 402
2026-06-21T23:42:57.8988391Z             }
2026-06-21T23:42:57.8988473Z           ]
2026-06-21T23:42:57.8988562Z         },
2026-06-21T23:42:57.8988656Z         "impl": {
2026-06-21T23:42:57.8988748Z           "complete": true,
2026-06-21T23:42:57.8988838Z           "evidence": [
2026-06-21T23:42:57.8988924Z             {
2026-06-21T23:42:57.8989120Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:42:57.8989211Z               "line": 797
2026-06-21T23:42:57.8989290Z             },
2026-06-21T23:42:57.8989382Z             {
2026-06-21T23:42:57.8989501Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:42:57.8989595Z               "line": 822
2026-06-21T23:42:57.8989778Z             },
2026-06-21T23:42:57.8989863Z             {
2026-06-21T23:42:57.8989978Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:42:57.8990060Z               "line": 839
2026-06-21T23:42:57.8990149Z             },
2026-06-21T23:42:57.8990230Z             {
2026-06-21T23:42:57.8990350Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:42:57.8990436Z               "line": 854
2026-06-21T23:42:57.8990521Z             },
2026-06-21T23:42:57.8990607Z             {
2026-06-21T23:42:57.8990718Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:42:57.8990811Z               "line": 874
2026-06-21T23:42:57.8990990Z             },
2026-06-21T23:42:57.8991075Z             {
2026-06-21T23:42:57.8991192Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:42:57.8991288Z               "line": 964
2026-06-21T23:42:57.8991369Z             },
2026-06-21T23:42:57.8991464Z             {
2026-06-21T23:42:57.8991578Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:42:57.8991670Z               "line": 1016
2026-06-21T23:42:57.8991751Z             },
2026-06-21T23:42:57.8991836Z             {
2026-06-21T23:42:57.8991956Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:42:57.8992046Z               "line": 1075
2026-06-21T23:42:57.8992136Z             },
2026-06-21T23:42:57.8992227Z             {
2026-06-21T23:42:57.8992351Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T23:42:57.8992437Z               "line": 527
2026-06-21T23:42:57.8992527Z             }
2026-06-21T23:42:57.8992614Z           ]
2026-06-21T23:42:57.8992699Z         },
2026-06-21T23:42:57.8992789Z         "int": {
2026-06-21T23:42:57.8992886Z           "complete": true,
2026-06-21T23:42:57.8992967Z           "evidence": [
2026-06-21T23:42:57.8993051Z             {
2026-06-21T23:42:57.8993171Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-21T23:42:57.8993273Z               "line": 35
2026-06-21T23:42:57.8993361Z             },
2026-06-21T23:42:57.8993456Z             {
2026-06-21T23:42:57.8993576Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-21T23:42:57.8993660Z               "line": 569
2026-06-21T23:42:57.8993745Z             },
2026-06-21T23:42:57.8993835Z             {
2026-06-21T23:42:57.8993955Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-21T23:42:57.8994055Z               "line": 590
2026-06-21T23:42:57.8994140Z             }
2026-06-21T23:42:57.8994217Z           ]
2026-06-21T23:42:57.8994308Z         },
2026-06-21T23:42:57.8994393Z         "unit": {
2026-06-21T23:42:57.8994479Z           "complete": true,
2026-06-21T23:42:57.8994575Z           "evidence": [
2026-06-21T23:42:57.8994656Z             {
2026-06-21T23:42:57.8994779Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:42:57.8994866Z               "line": 1202
2026-06-21T23:42:57.8994956Z             },
2026-06-21T23:42:57.8995041Z             {
2026-06-21T23:42:57.8995162Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:42:57.8995251Z               "line": 1246
2026-06-21T23:42:57.8995332Z             },
2026-06-21T23:42:57.8995418Z             {
2026-06-21T23:42:57.8995538Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:42:57.8995623Z               "line": 1260
2026-06-21T23:42:57.8995714Z             },
2026-06-21T23:42:57.8995801Z             {
2026-06-21T23:42:57.8995919Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:42:57.8996005Z               "line": 1278
2026-06-21T23:42:57.8996091Z             },
2026-06-21T23:42:57.8999375Z             {
2026-06-21T23:42:57.8999550Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:42:57.8999656Z               "line": 1302
2026-06-21T23:42:57.8999741Z             },
2026-06-21T23:42:57.8999822Z             {
2026-06-21T23:42:57.8999952Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:42:57.9000174Z               "line": 1529
2026-06-21T23:42:57.9000262Z             }
2026-06-21T23:42:57.9000347Z           ]
2026-06-21T23:42:57.9000423Z         }
2026-06-21T23:42:57.9000513Z       }
2026-06-21T23:42:57.9000601Z     },
2026-06-21T23:42:57.9000686Z     {
2026-06-21T23:42:57.9000795Z       "id": "REQ-HAZARD-VIEWER-ISOLATION",
2026-06-21T23:42:57.9002959Z       "title": "A slow / dead / hostile VIEWER must NEVER stall the controller, the PTY child, or the session drain thread. The broker drain fans output to the controller on the authoritative blocking bounded path (advances delivered_through) but to each viewer via a bounded per-viewer channel with a dedicated writer thread; the drain `try_send`s under the log lock and a viewer whose bounded queue OVERFLOWS (can't keep up) is EVICTED (queue dropped, writer thread ends, removed from the viewers map) — the drain thread NEVER touches a viewer socket, so no viewer write can backpressure or block it. A soft viewer cap bounds the thread count. Viewer eviction never perturbs the controller stream, the delivered_through cursor, or the child.",
2026-06-21T23:42:57.9003174Z       "requiredStages": [
2026-06-21T23:42:57.9003259Z         "unit",
2026-06-21T23:42:57.9003345Z         "int"
2026-06-21T23:42:57.9003426Z       ],
2026-06-21T23:42:57.9003513Z       "stages": {
2026-06-21T23:42:57.9003597Z         "doc": {
2026-06-21T23:42:57.9003688Z           "complete": true,
2026-06-21T23:42:57.9003780Z           "evidence": [
2026-06-21T23:42:57.9003861Z             {
2026-06-21T23:42:57.9003969Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T23:42:57.9004054Z               "line": 381
2026-06-21T23:42:57.9004136Z             }
2026-06-21T23:42:57.9004230Z           ]
2026-06-21T23:42:57.9004310Z         },
2026-06-21T23:42:57.9004400Z         "impl": {
2026-06-21T23:42:57.9004487Z           "complete": true,
2026-06-21T23:42:57.9004582Z           "evidence": [
2026-06-21T23:42:57.9004662Z             {
2026-06-21T23:42:57.9004792Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:42:57.9004887Z               "line": 143
2026-06-21T23:42:57.9004972Z             }
2026-06-21T23:42:57.9005054Z           ]
2026-06-21T23:42:57.9005126Z         },
2026-06-21T23:42:57.9005211Z         "int": {
2026-06-21T23:42:57.9005296Z           "complete": true,
2026-06-21T23:42:57.9005393Z           "evidence": [
2026-06-21T23:42:57.9005473Z             {
2026-06-21T23:42:57.9005601Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T23:42:57.9005698Z               "line": 1045
2026-06-21T23:42:57.9005779Z             }
2026-06-21T23:42:57.9005860Z           ]
2026-06-21T23:42:57.9005940Z         },
2026-06-21T23:42:57.9006037Z         "unit": {
2026-06-21T23:42:57.9006122Z           "complete": true,
2026-06-21T23:42:57.9006217Z           "evidence": [
2026-06-21T23:42:57.9006303Z             {
2026-06-21T23:42:57.9006427Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:42:57.9006522Z               "line": 2488
2026-06-21T23:42:57.9006613Z             }
2026-06-21T23:42:57.9006700Z           ]
2026-06-21T23:42:57.9006784Z         }
2026-06-21T23:42:57.9006870Z       }
2026-06-21T23:42:57.9006955Z     },
2026-06-21T23:42:57.9007032Z     {
2026-06-21T23:42:57.9007163Z       "id": "REQ-HAZARD-VIEWER-RING-ROLL-SNAP",
2026-06-21T23:42:57.9011408Z       "title": "A read-only rc --view VIEWER whose serving brain falls behind the live ring under a hard flood and receives a FORWARD Output seq gap (the ring rolled frames out between reads, BEFORE any channel-overflow eviction → NO KIND_VIEWER_EVICTED marker) must SNAP TO LIVE (accept-and-advance via dedup-below + snap-above), NOT fatal with output gap (brain.rs:624/628 legacy reject-gap). ROOT (v0.13.0 forkpty, post-b4+skip-to-live): serve_attach subscribes a viewer via brain.attach_as(Viewer) leaving session_cursors EMPTY → the viewer serve-brain uses the LEGACY reject-gap → a PRE-eviction ring-roll forward-gap FATALS read_event → serve_attach returns → forwarding stops → attach_received_pty_output=FALSE (a_journaled / p0_paste / attach.rs:1071 wedged_viewer, Linux forkpty; Windows ConPTY floods slower → MASKED false-green). DISTINCT from REQ-VIEWER-SKIP-TO-LIVE-ON-EVICT (the POST-eviction re-subscribe-from-floor): this is PRE-eviction gap-tolerance while STILL subscribed. VIEWER-only → B2-SAFE (a viewer never advances delivered_through / is not authoritative); the CONTROLLER keeps strict reject-gap (exactly-once resume). FIX: arm snap-above at initial viewer attach (attach_as_viewer_snap = attach_as(Viewer) + session_cursors.insert(session_id, from_seq)); the two viewer-survival mechanisms COMPOSE — this tolerates pre-eviction ring-roll gaps, REQ-VIEWER-SKIP-TO-LIVE-ON-EVICT recovers post-eviction. (v0.13.0)",
2026-06-21T23:42:57.9011722Z       "requiredStages": [
2026-06-21T23:42:57.9011805Z         "doc",
2026-06-21T23:42:57.9011885Z         "impl",
2026-06-21T23:42:57.9011965Z         "unit"
2026-06-21T23:42:57.9012047Z       ],
2026-06-21T23:42:57.9012124Z       "stages": {
2026-06-21T23:42:57.9012223Z         "doc": {
2026-06-21T23:42:57.9012317Z           "complete": true,
2026-06-21T23:42:57.9012408Z           "evidence": [
2026-06-21T23:42:57.9012490Z             {
2026-06-21T23:42:57.9012590Z               "path": "CONTEXT.md",
2026-06-21T23:42:57.9012675Z               "line": 342
2026-06-21T23:42:57.9012752Z             }
2026-06-21T23:42:57.9012842Z           ]
2026-06-21T23:42:57.9012928Z         },
2026-06-21T23:42:57.9013013Z         "impl": {
2026-06-21T23:42:57.9013105Z           "complete": true,
2026-06-21T23:42:57.9013200Z           "evidence": [
2026-06-21T23:42:57.9013275Z             {
2026-06-21T23:42:57.9013400Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T23:42:57.9013538Z               "line": 333
2026-06-21T23:42:57.9013662Z             },
2026-06-21T23:42:57.9013749Z             {
2026-06-21T23:42:57.9013872Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T23:42:57.9013957Z               "line": 892
2026-06-21T23:42:57.9014049Z             }
2026-06-21T23:42:57.9014130Z           ]
2026-06-21T23:42:57.9014215Z         },
2026-06-21T23:42:57.9014301Z         "int": {
2026-06-21T23:42:57.9014383Z           "complete": false,
2026-06-21T23:42:57.9014477Z           "evidence": []
2026-06-21T23:42:57.9014567Z         },
2026-06-21T23:42:57.9014653Z         "unit": {
2026-06-21T23:42:57.9014739Z           "complete": true,
2026-06-21T23:42:57.9014827Z           "evidence": [
2026-06-21T23:42:57.9014913Z             {
2026-06-21T23:42:57.9015032Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T23:42:57.9015133Z               "line": 1682
2026-06-21T23:42:57.9015218Z             }
2026-06-21T23:42:57.9015304Z           ]
2026-06-21T23:42:57.9015385Z         }
2026-06-21T23:42:57.9015476Z       }
2026-06-21T23:42:57.9015561Z     },
2026-06-21T23:42:57.9015638Z     {
2026-06-21T23:42:57.9015814Z       "id": "REQ-HAZARD-VIEWER-STARVE-UNDER-CONTROLLER-BACKPRESSURE",
2026-06-21T23:42:57.9021143Z       "title": "A SLOW controller must not starve a concurrent `rc --view` VIEWER. W1 (REQ-HAZARD-INJECT-CONTROL-COEXIST) moved the controller SOCKET WRITE off the drain thread onto controller_writer, but left the bounded HANDOFF (ControllerJob::deliver) as an INLINE try_send SLEEP-POLL on the drain (broker.rs:1450-1457 → deliver:669-685, up to CONTROLLER_WRITE_DEADLINE=5s). So when a controller drains slower than the PTY floods, its CONTROLLER_CHANNEL_DEPTH(4096) channel fills, deliver() polls inline, and the DRAIN THREAD is throttled to the controller's read rate → OutputLog::append's viewer fan-out (try_send) stops running → a concurrent VIEWER receives only the initial replay then nothing (root 'b4', warm forkpty: a_journaled c1=0/EVICT=0/got_output=FALSE; steady-state-near-full = no recovery; forkpty-only, floods harder than Windows ConPTY). The viewer-not-starved-by-a-busy-session property is legitimate (rc --view of a noisy session must show LIVE output). FIX: the controller becomes a SINGLE NON-BLOCKING try_send (like a viewer), done IN append() under the log lock; deliver()'s sleep-poll DELETED; the drain NEVER sleeps. ControllerSink gains a stateful last_ok deadline → a TRULY-stalled controller (continuous-Full past CONTROLLER_WRITE_DEADLINE) is evicted (bounded-wedge preserved); a slow-but-alive controller DROPS frames + falls behind the ring (resume-from-floor, the existing reconnect case). B2 GAPLESS-HANDOFF PRESERVED via a CONTIGUOUS delivered_through: controller_writer advances the cursor ONLY when the written seq == cursor (next expected); a gap from a drop FREEZES the cursor at last-contiguous so a re-attaching brain's resume_seq never skips a dropped chunk (a high-watermark advance past the gap would be a not-exactly-once resume = B2 violation, doyle's gate). (v0.13.0)",
2026-06-21T23:42:57.9021529Z       "requiredStages": [
2026-06-21T23:42:57.9021620Z         "impl",
2026-06-21T23:42:57.9021706Z         "unit"
2026-06-21T23:42:57.9021792Z       ],
2026-06-21T23:42:57.9021877Z       "stages": {
2026-06-21T23:42:57.9021963Z         "doc": {
2026-06-21T23:42:57.9022064Z           "complete": false,
2026-06-21T23:42:57.9022149Z           "evidence": []
2026-06-21T23:42:57.9022226Z         },
2026-06-21T23:42:57.9022307Z         "impl": {
2026-06-21T23:42:57.9022403Z           "complete": true,
2026-06-21T23:42:57.9022487Z           "evidence": [
2026-06-21T23:42:57.9022574Z             {
2026-06-21T23:42:57.9022703Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:42:57.9022788Z               "line": 365
2026-06-21T23:42:57.9022872Z             },
2026-06-21T23:42:57.9022949Z             {
2026-06-21T23:42:57.9023069Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:42:57.9023164Z               "line": 821
2026-06-21T23:42:57.9023254Z             }
2026-06-21T23:42:57.9023340Z           ]
2026-06-21T23:42:57.9023421Z         },
2026-06-21T23:42:57.9023507Z         "int": {
2026-06-21T23:42:57.9023597Z           "complete": false,
2026-06-21T23:42:57.9023699Z           "evidence": []
2026-06-21T23:42:57.9023789Z         },
2026-06-21T23:42:57.9023869Z         "unit": {
2026-06-21T23:42:57.9023966Z           "complete": true,
2026-06-21T23:42:57.9024042Z           "evidence": [
2026-06-21T23:42:57.9024132Z             {
2026-06-21T23:42:57.9024237Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:42:57.9024323Z               "line": 2703
2026-06-21T23:42:57.9024408Z             },
2026-06-21T23:42:57.9024489Z             {
2026-06-21T23:42:57.9024609Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:42:57.9024690Z               "line": 2772
2026-06-21T23:42:57.9024775Z             }
2026-06-21T23:42:57.9024862Z           ]
2026-06-21T23:42:57.9024953Z         }
2026-06-21T23:42:57.9025037Z       }
2026-06-21T23:42:57.9025118Z     },
2026-06-21T23:42:57.9025198Z     {
2026-06-21T23:42:57.9025304Z       "id": "REQ-HAZARD-WAN-ORIGIN-AUTH",
2026-06-21T23:42:57.9026102Z       "title": "WAN-inbound origin is transport truth, never payload: the access gate's subject (ADR-0009 origin-node whitelist) is the QUIC handshake-proven remote node id from the broker's conn/stream table — a forged origin/node field inside record bytes is inert (7.5)",
2026-06-21T23:42:57.9026198Z       "requiredStages": [
2026-06-21T23:42:57.9026284Z         "doc",
2026-06-21T23:42:57.9026369Z         "impl",
2026-06-21T23:42:57.9026455Z         "unit"
2026-06-21T23:42:57.9026542Z       ],
2026-06-21T23:42:57.9026627Z       "stages": {
2026-06-21T23:42:57.9026712Z         "doc": {
2026-06-21T23:42:57.9026803Z           "complete": true,
2026-06-21T23:42:57.9026895Z           "evidence": [
2026-06-21T23:42:57.9026980Z             {
2026-06-21T23:42:57.9027094Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T23:42:57.9027186Z               "line": 366
2026-06-21T23:42:57.9027270Z             }
2026-06-21T23:42:57.9027347Z           ]
2026-06-21T23:42:57.9027428Z         },
2026-06-21T23:42:57.9027515Z         "impl": {
2026-06-21T23:42:57.9027595Z           "complete": true,
2026-06-21T23:42:57.9027768Z           "evidence": [
2026-06-21T23:42:57.9027854Z             {
2026-06-21T23:42:57.9027966Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T23:42:57.9028051Z               "line": 87
2026-06-21T23:42:57.9028132Z             },
2026-06-21T23:42:57.9028222Z             {
2026-06-21T23:42:57.9028335Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T23:42:57.9028426Z               "line": 203
2026-06-21T23:42:57.9028512Z             },
2026-06-21T23:42:57.9028583Z             {
2026-06-21T23:42:57.9028707Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T23:42:57.9028794Z               "line": 55
2026-06-21T23:42:57.9029026Z             },
2026-06-21T23:42:57.9029109Z             {
2026-06-21T23:42:57.9029227Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T23:42:57.9029322Z               "line": 31
2026-06-21T23:42:57.9029404Z             },
2026-06-21T23:42:57.9029489Z             {
2026-06-21T23:42:57.9029603Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T23:42:57.9029695Z               "line": 446
2026-06-21T23:42:57.9029790Z             },
2026-06-21T23:42:57.9029865Z             {
2026-06-21T23:42:57.9029995Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T23:42:57.9030077Z               "line": 95
2026-06-21T23:42:57.9030156Z             },
2026-06-21T23:42:57.9030243Z             {
2026-06-21T23:42:57.9030373Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T23:42:57.9030457Z               "line": 29
2026-06-21T23:42:57.9030537Z             },
2026-06-21T23:42:57.9030622Z             {
2026-06-21T23:42:57.9030747Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T23:42:57.9030830Z               "line": 104
2026-06-21T23:42:57.9030920Z             },
2026-06-21T23:42:57.9031007Z             {
2026-06-21T23:42:57.9031136Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:42:57.9031226Z               "line": 208
2026-06-21T23:42:57.9031307Z             },
2026-06-21T23:42:57.9031389Z             {
2026-06-21T23:42:57.9031512Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-21T23:42:57.9031603Z               "line": 28
2026-06-21T23:42:57.9031684Z             },
2026-06-21T23:42:57.9031770Z             {
2026-06-21T23:42:57.9031888Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-21T23:42:57.9031976Z               "line": 74
2026-06-21T23:42:57.9032056Z             },
2026-06-21T23:42:57.9032137Z             {
2026-06-21T23:42:57.9032261Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T23:42:57.9032352Z               "line": 32
2026-06-21T23:42:57.9032437Z             },
2026-06-21T23:42:57.9032523Z             {
2026-06-21T23:42:57.9032634Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T23:42:57.9032719Z               "line": 40
2026-06-21T23:42:57.9032809Z             },
2026-06-21T23:42:57.9032886Z             {
2026-06-21T23:42:57.9033005Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T23:42:57.9033100Z               "line": 184
2026-06-21T23:42:57.9033182Z             },
2026-06-21T23:42:57.9033273Z             {
2026-06-21T23:42:57.9033381Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T23:42:57.9033480Z               "line": 61
2026-06-21T23:42:57.9033567Z             },
2026-06-21T23:42:57.9033653Z             {
2026-06-21T23:42:57.9033762Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T23:42:57.9033843Z               "line": 131
2026-06-21T23:42:57.9033934Z             },
2026-06-21T23:42:57.9034020Z             {
2026-06-21T23:42:57.9034138Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T23:42:57.9034230Z               "line": 223
2026-06-21T23:42:57.9034306Z             },
2026-06-21T23:42:57.9034396Z             {
2026-06-21T23:42:57.9034501Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-21T23:42:57.9034711Z               "line": 37
2026-06-21T23:42:57.9034797Z             },
2026-06-21T23:42:57.9034883Z             {
2026-06-21T23:42:57.9035007Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T23:42:57.9035092Z               "line": 38
2026-06-21T23:42:57.9035179Z             },
2026-06-21T23:42:57.9035264Z             {
2026-06-21T23:42:57.9035374Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T23:42:57.9035465Z               "line": 36
2026-06-21T23:42:57.9035560Z             },
2026-06-21T23:42:57.9035635Z             {
2026-06-21T23:42:57.9035753Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-21T23:42:57.9035943Z               "line": 40
2026-06-21T23:42:57.9036028Z             }
2026-06-21T23:42:57.9036114Z           ]
2026-06-21T23:42:57.9036200Z         },
2026-06-21T23:42:57.9036291Z         "int": {
2026-06-21T23:42:57.9036386Z           "complete": false,
2026-06-21T23:42:57.9036472Z           "evidence": []
2026-06-21T23:42:57.9036548Z         },
2026-06-21T23:42:57.9036634Z         "unit": {
2026-06-21T23:42:57.9036724Z           "complete": true,
2026-06-21T23:42:57.9036816Z           "evidence": [
2026-06-21T23:42:57.9036897Z             {
2026-06-21T23:42:57.9037010Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T23:42:57.9037102Z               "line": 212
2026-06-21T23:42:57.9037192Z             },
2026-06-21T23:42:57.9037273Z             {
2026-06-21T23:42:57.9037402Z               "path": "crates/spt-daemon/tests/notifsync.rs",
2026-06-21T23:42:57.9037478Z               "line": 136
2026-06-21T23:42:57.9037569Z             },
2026-06-21T23:42:57.9037649Z             {
2026-06-21T23:42:57.9037775Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T23:42:57.9037863Z               "line": 685
2026-06-21T23:42:57.9037949Z             },
2026-06-21T23:42:57.9038023Z             {
2026-06-21T23:42:57.9038132Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T23:42:57.9038227Z               "line": 224
2026-06-21T23:42:57.9038308Z             },
2026-06-21T23:42:57.9038390Z             {
2026-06-21T23:42:57.9038507Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-21T23:42:57.9038592Z               "line": 206
2026-06-21T23:42:57.9038678Z             },
2026-06-21T23:42:57.9038759Z             {
2026-06-21T23:42:57.9038871Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T23:42:57.9039039Z               "line": 112
2026-06-21T23:42:57.9039116Z             },
2026-06-21T23:42:57.9039200Z             {
2026-06-21T23:42:57.9039301Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-21T23:42:57.9039396Z               "line": 157
2026-06-21T23:42:57.9039482Z             },
2026-06-21T23:42:57.9039563Z             {
2026-06-21T23:42:57.9039688Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T23:42:57.9039769Z               "line": 215
2026-06-21T23:42:57.9039848Z             },
2026-06-21T23:42:57.9039935Z             {
2026-06-21T23:42:57.9040049Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T23:42:57.9040144Z               "line": 141
2026-06-21T23:42:57.9040225Z             },
2026-06-21T23:42:57.9040313Z             {
2026-06-21T23:42:57.9040421Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-21T23:42:57.9040517Z               "line": 162
2026-06-21T23:42:57.9040594Z             }
2026-06-21T23:42:57.9040684Z           ]
2026-06-21T23:42:57.9040774Z         }
2026-06-21T23:42:57.9040855Z       }
2026-06-21T23:42:57.9040942Z     },
2026-06-21T23:42:57.9041022Z     {
2026-06-21T23:42:57.9041154Z       "id": "REQ-HAZARD-WIN-PTY-PROGRAM-RESOLVE",
2026-06-21T23:42:57.9043007Z       "title": "Native-PTY spawn must resolve a bare program name with PATHEXT precedence and run a non-PE target through its interpreter: portable-pty's own `which` takes the FIRST PATH match — an extensionless shebang shim (e.g. a node CLI `ccs` shipped beside `ccs.cmd`) — and CreateProcessW then rejects the non-PE file with os error 193 ('not a valid Win32 application'); spt-term resolves the program itself (PATHEXT order prefers .EXE over .CMD; .cmd/.bat → cmd.exe /d /c, .ps1 → powershell -NoProfile -File) so a bare harness/shell [session.self] command actually launches on Windows. Unix is a passthrough (execve honours the shebang).",
2026-06-21T23:42:57.9043222Z       "requiredStages": [
2026-06-21T23:42:57.9043307Z         "doc",
2026-06-21T23:42:57.9043394Z         "impl",
2026-06-21T23:42:57.9043480Z         "unit",
2026-06-21T23:42:57.9043570Z         "int"
2026-06-21T23:42:57.9043655Z       ],
2026-06-21T23:42:57.9043737Z       "stages": {
2026-06-21T23:42:57.9043922Z         "doc": {
2026-06-21T23:42:57.9044021Z           "complete": true,
2026-06-21T23:42:57.9044107Z           "evidence": [
2026-06-21T23:42:57.9044194Z             {
2026-06-21T23:42:57.9044303Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T23:42:57.9044389Z               "line": 250
2026-06-21T23:42:57.9044471Z             }
2026-06-21T23:42:57.9044561Z           ]
2026-06-21T23:42:57.9044651Z         },
2026-06-21T23:42:57.9044737Z         "impl": {
2026-06-21T23:42:57.9044833Z           "complete": true,
2026-06-21T23:42:57.9044928Z           "evidence": [
2026-06-21T23:42:57.9044999Z             {
2026-06-21T23:42:57.9045119Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T23:42:57.9045204Z               "line": 135
2026-06-21T23:42:57.9045285Z             },
2026-06-21T23:42:57.9045367Z             {
2026-06-21T23:42:57.9045481Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T23:42:57.9045581Z               "line": 157
2026-06-21T23:42:57.9045667Z             }
2026-06-21T23:42:57.9045749Z           ]
2026-06-21T23:42:57.9045834Z         },
2026-06-21T23:42:57.9045929Z         "int": {
2026-06-21T23:42:57.9046020Z           "complete": true,
2026-06-21T23:42:57.9046115Z           "evidence": [
2026-06-21T23:42:57.9046205Z             {
2026-06-21T23:42:57.9046323Z               "path": "crates/spt-term/tests/winspawn.rs",
2026-06-21T23:42:57.9046424Z               "line": 15
2026-06-21T23:42:57.9046508Z             }
2026-06-21T23:42:57.9046593Z           ]
2026-06-21T23:42:57.9046674Z         },
2026-06-21T23:42:57.9046756Z         "unit": {
2026-06-21T23:42:57.9046856Z           "complete": true,
2026-06-21T23:42:57.9046941Z           "evidence": [
2026-06-21T23:42:57.9047023Z             {
2026-06-21T23:42:57.9047137Z               "path": "crates/spt-term/src/winprog.rs",
2026-06-21T23:42:57.9047231Z               "line": 233
2026-06-21T23:42:57.9047314Z             }
2026-06-21T23:42:57.9047400Z           ]
2026-06-21T23:42:57.9047485Z         }
2026-06-21T23:42:57.9047575Z       }
2026-06-21T23:42:57.9047667Z     },
2026-06-21T23:42:57.9047752Z     {
2026-06-21T23:42:57.9047870Z       "id": "REQ-HAZARD-WINDOWS-PID-RECYCLE",
2026-06-21T23:42:57.9048020Z       "title": "Windows PID-recycling false positives guarded (5.1)",
2026-06-21T23:42:57.9048124Z       "requiredStages": [
2026-06-21T23:42:57.9048219Z         "impl",
2026-06-21T23:42:57.9048306Z         "unit"
2026-06-21T23:42:57.9048391Z       ],
2026-06-21T23:42:57.9048477Z       "stages": {
2026-06-21T23:42:57.9048558Z         "doc": {
2026-06-21T23:42:57.9048654Z           "complete": false,
2026-06-21T23:42:57.9048753Z           "evidence": []
2026-06-21T23:42:57.9048844Z         },
2026-06-21T23:42:57.9048922Z         "impl": {
2026-06-21T23:42:57.9049091Z           "complete": true,
2026-06-21T23:42:57.9049181Z           "evidence": [
2026-06-21T23:42:57.9049267Z             {
2026-06-21T23:42:57.9049384Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T23:42:57.9049479Z               "line": 95
2026-06-21T23:42:57.9049565Z             },
2026-06-21T23:42:57.9049647Z             {
2026-06-21T23:42:57.9049760Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:42:57.9049846Z               "line": 117
2026-06-21T23:42:57.9049938Z             }
2026-06-21T23:42:57.9050019Z           ]
2026-06-21T23:42:57.9050229Z         },
2026-06-21T23:42:57.9050309Z         "int": {
2026-06-21T23:42:57.9050399Z           "complete": false,
2026-06-21T23:42:57.9050505Z           "evidence": []
2026-06-21T23:42:57.9050582Z         },
2026-06-21T23:42:57.9050677Z         "unit": {
2026-06-21T23:42:57.9050762Z           "complete": true,
2026-06-21T23:42:57.9050863Z           "evidence": [
2026-06-21T23:42:57.9050943Z             {
2026-06-21T23:42:57.9051052Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T23:42:57.9051150Z               "line": 250
2026-06-21T23:42:57.9051231Z             },
2026-06-21T23:42:57.9051310Z             {
2026-06-21T23:42:57.9051416Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T23:42:57.9051620Z               "line": 412
2026-06-21T23:42:57.9051701Z             },
2026-06-21T23:42:57.9051786Z             {
2026-06-21T23:42:57.9051914Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:42:57.9051998Z               "line": 611
2026-06-21T23:42:57.9052084Z             },
2026-06-21T23:42:57.9052171Z             {
2026-06-21T23:42:57.9052289Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:42:57.9052384Z               "line": 669
2026-06-21T23:42:57.9052467Z             }
2026-06-21T23:42:57.9052547Z           ]
2026-06-21T23:42:57.9052632Z         }
2026-06-21T23:42:57.9052718Z       }
2026-06-21T23:42:57.9052801Z     },
2026-06-21T23:42:57.9052886Z     {
2026-06-21T23:42:57.9053004Z       "id": "REQ-HAZARD-WMI-DAEMON-WINDOW",
2026-06-21T23:42:57.9055441Z       "title": "`spt daemon start` launches the daemon with NO visible console window. REGRESSION (v0.12.1 L1.5): the WMI job-neutral launch (spawn_daemon_via_wmi) set CREATE_NO_WINDOW on the launching powershell but NOT on the Win32_Process.Create call — Win32_Process.Create does not inherit it, so the spawned cmd.exe env-forwarding wrapper popped a console window on every cold-start (violating REQ-INSTALL-10's v0.7.4 no-persistent-window invariant; the old detached_no_inherit path set DETACHED_PROCESS|CREATE_NO_WINDOW). FIX: pass a Win32_ProcessStartup with CreateFlags=DETACHED_PROCESS (0x8 — no console so no window; CREATE_NO_WINDOW 0x08000000 is NOT a valid Win32_ProcessStartup flag → ReturnValue 21 invalid-param, which is why the naive port fails) + ShowWindow=SW_HIDE(0) belt, via the ProcessStartupInformation argument. (v0.12.2)",
2026-06-21T23:42:57.9055554Z       "requiredStages": [
2026-06-21T23:42:57.9055631Z         "impl",
2026-06-21T23:42:57.9055717Z         "unit",
2026-06-21T23:42:57.9055817Z         "int"
2026-06-21T23:42:57.9055897Z       ],
2026-06-21T23:42:57.9055990Z       "stages": {
2026-06-21T23:42:57.9056079Z         "doc": {
2026-06-21T23:42:57.9056179Z           "complete": false,
2026-06-21T23:42:57.9056271Z           "evidence": []
2026-06-21T23:42:57.9056356Z         },
2026-06-21T23:42:57.9056441Z         "impl": {
2026-06-21T23:42:57.9056532Z           "complete": true,
2026-06-21T23:42:57.9056629Z           "evidence": [
2026-06-21T23:42:57.9056717Z             {
2026-06-21T23:42:57.9056846Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:42:57.9056946Z               "line": 925
2026-06-21T23:42:57.9057021Z             },
2026-06-21T23:42:57.9057106Z             {
2026-06-21T23:42:57.9057225Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:42:57.9057321Z               "line": 994
2026-06-21T23:42:57.9057411Z             }
2026-06-21T23:42:57.9057491Z           ]
2026-06-21T23:42:57.9057578Z         },
2026-06-21T23:42:57.9057664Z         "int": {
2026-06-21T23:42:57.9057764Z           "complete": true,
2026-06-21T23:42:57.9057849Z           "evidence": [
2026-06-21T23:42:57.9057941Z             {
2026-06-21T23:42:57.9058069Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-21T23:42:57.9058155Z               "line": 187
2026-06-21T23:42:57.9058246Z             },
2026-06-21T23:42:57.9058327Z             {
2026-06-21T23:42:57.9058450Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-21T23:42:57.9058608Z               "line": 348
2026-06-21T23:42:57.9058693Z             }
2026-06-21T23:42:57.9058774Z           ]
2026-06-21T23:42:57.9058861Z         },
2026-06-21T23:42:57.9059013Z         "unit": {
2026-06-21T23:42:57.9059104Z           "complete": true,
2026-06-21T23:42:57.9059195Z           "evidence": [
2026-06-21T23:42:57.9059280Z             {
2026-06-21T23:42:57.9059390Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:42:57.9059477Z               "line": 1206
2026-06-21T23:42:57.9059557Z             },
2026-06-21T23:42:57.9059642Z             {
2026-06-21T23:42:57.9059746Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9059940Z               "line": 8116
2026-06-21T23:42:57.9060025Z             }
2026-06-21T23:42:57.9060097Z           ]
2026-06-21T23:42:57.9060184Z         }
2026-06-21T23:42:57.9060264Z       }
2026-06-21T23:42:57.9060349Z     },
2026-06-21T23:42:57.9060431Z     {
2026-06-21T23:42:57.9060545Z       "id": "REQ-HAZARD-WORKER-PATH",
2026-06-21T23:42:57.9060717Z       "title": "Single source of truth for Worker/Psyche perch location (1.5)",
2026-06-21T23:42:57.9060818Z       "requiredStages": [
2026-06-21T23:42:57.9060913Z         "impl",
2026-06-21T23:42:57.9060988Z         "unit"
2026-06-21T23:42:57.9061080Z       ],
2026-06-21T23:42:57.9061161Z       "stages": {
2026-06-21T23:42:57.9061246Z         "doc": {
2026-06-21T23:42:57.9061337Z           "complete": false,
2026-06-21T23:42:57.9061423Z           "evidence": []
2026-06-21T23:42:57.9061518Z         },
2026-06-21T23:42:57.9061604Z         "impl": {
2026-06-21T23:42:57.9061705Z           "complete": true,
2026-06-21T23:42:57.9061791Z           "evidence": [
2026-06-21T23:42:57.9061870Z             {
2026-06-21T23:42:57.9061986Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:42:57.9062082Z               "line": 262
2026-06-21T23:42:57.9062176Z             },
2026-06-21T23:42:57.9062261Z             {
2026-06-21T23:42:57.9062384Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:42:57.9062483Z               "line": 307
2026-06-21T23:42:57.9062568Z             },
2026-06-21T23:42:57.9062654Z             {
2026-06-21T23:42:57.9062769Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:42:57.9062854Z               "line": 319
2026-06-21T23:42:57.9062935Z             }
2026-06-21T23:42:57.9063022Z           ]
2026-06-21T23:42:57.9063107Z         },
2026-06-21T23:42:57.9063202Z         "int": {
2026-06-21T23:42:57.9063288Z           "complete": false,
2026-06-21T23:42:57.9063389Z           "evidence": []
2026-06-21T23:42:57.9063475Z         },
2026-06-21T23:42:57.9063559Z         "unit": {
2026-06-21T23:42:57.9063661Z           "complete": true,
2026-06-21T23:42:57.9063746Z           "evidence": [
2026-06-21T23:42:57.9063831Z             {
2026-06-21T23:42:57.9063942Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:42:57.9064042Z               "line": 455
2026-06-21T23:42:57.9064132Z             },
2026-06-21T23:42:57.9064213Z             {
2026-06-21T23:42:57.9064319Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:42:57.9064408Z               "line": 499
2026-06-21T23:42:57.9064489Z             }
2026-06-21T23:42:57.9064577Z           ]
2026-06-21T23:42:57.9064663Z         }
2026-06-21T23:42:57.9064746Z       }
2026-06-21T23:42:57.9064833Z     },
2026-06-21T23:42:57.9064920Z     {
2026-06-21T23:42:57.9065024Z       "id": "REQ-HOST-RUN-1",
2026-06-21T23:42:57.9067415Z       "title": "spt-hosted harness bringup: `spt endpoint run` spawns an adapter's `[session.self]` command template into a broker-held PTY (the spawn-session seam, brain.rs spawn_session_pid — same broker path shellhost.rs launch_shell_brokered_in uses for shells, now for kind=\"harness\" self-role), registers the perch under the given endpoint id, returns the id. Reverses today's harness-hosted-only launch (external launcher → `api bind`). Non-interactive flag set (--adapter <a[:profile]> --id <id> --create --resume <session> --attach|--start|--view) covers every terminal action of the W2 interactive picker so shortcuts (cc-<id>) bake fully non-interactive launches; composite adapter:profile resolves via registry::resolve_option leaf-replace overlay.",
2026-06-21T23:42:57.9067741Z       "requiredStages": [
2026-06-21T23:42:57.9067833Z         "impl",
2026-06-21T23:42:57.9067915Z         "unit",
2026-06-21T23:42:57.9067999Z         "int"
2026-06-21T23:42:57.9068076Z       ],
2026-06-21T23:42:57.9068162Z       "stages": {
2026-06-21T23:42:57.9068248Z         "doc": {
2026-06-21T23:42:57.9068338Z           "complete": false,
2026-06-21T23:42:57.9068429Z           "evidence": []
2026-06-21T23:42:57.9068595Z         },
2026-06-21T23:42:57.9068681Z         "impl": {
2026-06-21T23:42:57.9068773Z           "complete": true,
2026-06-21T23:42:57.9068868Z           "evidence": [
2026-06-21T23:42:57.9069025Z             {
2026-06-21T23:42:57.9069154Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T23:42:57.9069239Z               "line": 30
2026-06-21T23:42:57.9069334Z             },
2026-06-21T23:42:57.9069422Z             {
2026-06-21T23:42:57.9069549Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T23:42:57.9069630Z               "line": 76
2026-06-21T23:42:57.9069708Z             },
2026-06-21T23:42:57.9069793Z             {
2026-06-21T23:42:57.9069921Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T23:42:57.9070008Z               "line": 181
2026-06-21T23:42:57.9070094Z             },
2026-06-21T23:42:57.9070178Z             {
2026-06-21T23:42:57.9070287Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9070383Z               "line": 1266
2026-06-21T23:42:57.9070472Z             }
2026-06-21T23:42:57.9070552Z           ]
2026-06-21T23:42:57.9070633Z         },
2026-06-21T23:42:57.9070714Z         "int": {
2026-06-21T23:42:57.9070796Z           "complete": true,
2026-06-21T23:42:57.9070895Z           "evidence": [
2026-06-21T23:42:57.9070976Z             {
2026-06-21T23:42:57.9071101Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T23:42:57.9071191Z               "line": 288
2026-06-21T23:42:57.9071267Z             }
2026-06-21T23:42:57.9071354Z           ]
2026-06-21T23:42:57.9071430Z         },
2026-06-21T23:42:57.9071529Z         "unit": {
2026-06-21T23:42:57.9071625Z           "complete": true,
2026-06-21T23:42:57.9071721Z           "evidence": [
2026-06-21T23:42:57.9071802Z             {
2026-06-21T23:42:57.9071911Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T23:42:57.9072012Z               "line": 229
2026-06-21T23:42:57.9072092Z             },
2026-06-21T23:42:57.9072178Z             {
2026-06-21T23:42:57.9072298Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T23:42:57.9072397Z               "line": 296
2026-06-21T23:42:57.9072474Z             },
2026-06-21T23:42:57.9072555Z             {
2026-06-21T23:42:57.9072675Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T23:42:57.9072759Z               "line": 419
2026-06-21T23:42:57.9072849Z             }
2026-06-21T23:42:57.9072940Z           ]
2026-06-21T23:42:57.9073029Z         }
2026-06-21T23:42:57.9073114Z       }
2026-06-21T23:42:57.9073195Z     },
2026-06-21T23:42:57.9073276Z     {
2026-06-21T23:42:57.9073368Z       "id": "REQ-HOST-RUN-2",
2026-06-21T23:42:57.9075054Z       "title": "Project-scoped working directory for spt-hosted bringup: `spt endpoint run` lands the broker-spawned harness PTY in the user's PROJECT cwd, not the daemon's, via an additive `SpawnReq.cwd` field carried through the broker PTY spawn (portable-pty CommandBuilder cwd). N-1-safe wire change (additive, defaulted). Required because the consumer (Claude Code) is project-scoped: broker-inherited cwd = the daemon's cwd = the wrong `.claude`, wrong session history, wrong digest source; `cc <id>` at a project root MUST land the harness in that project. W1 ships broker-inherited cwd as a bringup-proof shortcut only; this REQ must land before the M12 gate (doyle, 2026-06-14).",
2026-06-21T23:42:57.9075265Z       "requiredStages": [
2026-06-21T23:42:57.9075346Z         "impl",
2026-06-21T23:42:57.9075432Z         "unit",
2026-06-21T23:42:57.9075509Z         "int"
2026-06-21T23:42:57.9075603Z       ],
2026-06-21T23:42:57.9075697Z       "stages": {
2026-06-21T23:42:57.9075778Z         "doc": {
2026-06-21T23:42:57.9075879Z           "complete": false,
2026-06-21T23:42:57.9075955Z           "evidence": []
2026-06-21T23:42:57.9076040Z         },
2026-06-21T23:42:57.9076126Z         "impl": {
2026-06-21T23:42:57.9076227Z           "complete": true,
2026-06-21T23:42:57.9076321Z           "evidence": [
2026-06-21T23:42:57.9076518Z             {
2026-06-21T23:42:57.9076650Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T23:42:57.9076737Z               "line": 182
2026-06-21T23:42:57.9076828Z             },
2026-06-21T23:42:57.9076909Z             {
2026-06-21T23:42:57.9077027Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T23:42:57.9077129Z               "line": 113
2026-06-21T23:42:57.9077199Z             }
2026-06-21T23:42:57.9077290Z           ]
2026-06-21T23:42:57.9077357Z         },
2026-06-21T23:42:57.9077449Z         "int": {
2026-06-21T23:42:57.9077528Z           "complete": true,
2026-06-21T23:42:57.9077623Z           "evidence": [
2026-06-21T23:42:57.9077706Z             {
2026-06-21T23:42:57.9077833Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T23:42:57.9077923Z               "line": 575
2026-06-21T23:42:57.9078004Z             }
2026-06-21T23:42:57.9078090Z           ]
2026-06-21T23:42:57.9078169Z         },
2026-06-21T23:42:57.9078259Z         "unit": {
2026-06-21T23:42:57.9078359Z           "complete": true,
2026-06-21T23:42:57.9078446Z           "evidence": [
2026-06-21T23:42:57.9078531Z             {
2026-06-21T23:42:57.9078646Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-21T23:42:57.9078737Z               "line": 86
2026-06-21T23:42:57.9078813Z             }
2026-06-21T23:42:57.9078893Z           ]
2026-06-21T23:42:57.9079056Z         }
2026-06-21T23:42:57.9079137Z       }
2026-06-21T23:42:57.9079227Z     },
2026-06-21T23:42:57.9079295Z     {
2026-06-21T23:42:57.9079385Z       "id": "REQ-INFRA-1",
2026-06-21T23:42:57.9079575Z       "title": "GitHub issue tracking for v1; tangled.org as migration target",
2026-06-21T23:42:57.9079677Z       "requiredStages": [],
2026-06-21T23:42:57.9079761Z       "stages": {
2026-06-21T23:42:57.9079847Z         "doc": {
2026-06-21T23:42:57.9079943Z           "complete": false,
2026-06-21T23:42:57.9080038Z           "evidence": []
2026-06-21T23:42:57.9080128Z         },
2026-06-21T23:42:57.9080219Z         "impl": {
2026-06-21T23:42:57.9080316Z           "complete": false,
2026-06-21T23:42:57.9080414Z           "evidence": []
2026-06-21T23:42:57.9080496Z         },
2026-06-21T23:42:57.9080587Z         "int": {
2026-06-21T23:42:57.9080677Z           "complete": false,
2026-06-21T23:42:57.9080762Z           "evidence": []
2026-06-21T23:42:57.9080847Z         },
2026-06-21T23:42:57.9080933Z         "unit": {
2026-06-21T23:42:57.9081027Z           "complete": false,
2026-06-21T23:42:57.9081117Z           "evidence": []
2026-06-21T23:42:57.9081208Z         }
2026-06-21T23:42:57.9081289Z       }
2026-06-21T23:42:57.9081379Z     },
2026-06-21T23:42:57.9081465Z     {
2026-06-21T23:42:57.9081551Z       "id": "REQ-INST-1",
2026-06-21T23:42:57.9081722Z       "title": "endpoint ID vs instance split (adapter-agnostic ID)",
2026-06-21T23:42:57.9081817Z       "requiredStages": [],
2026-06-21T23:42:57.9084679Z       "stages": {
2026-06-21T23:42:57.9084795Z         "doc": {
2026-06-21T23:42:57.9084914Z           "complete": false,
2026-06-21T23:42:57.9085009Z           "evidence": []
2026-06-21T23:42:57.9085091Z         },
2026-06-21T23:42:57.9085177Z         "impl": {
2026-06-21T23:42:57.9085272Z           "complete": false,
2026-06-21T23:42:57.9085362Z           "evidence": []
2026-06-21T23:42:57.9085454Z         },
2026-06-21T23:42:57.9085682Z         "int": {
2026-06-21T23:42:57.9085773Z           "complete": false,
2026-06-21T23:42:57.9085876Z           "evidence": []
2026-06-21T23:42:57.9085963Z         },
2026-06-21T23:42:57.9086045Z         "unit": {
2026-06-21T23:42:57.9086144Z           "complete": false,
2026-06-21T23:42:57.9086224Z           "evidence": []
2026-06-21T23:42:57.9086305Z         }
2026-06-21T23:42:57.9086386Z       }
2026-06-21T23:42:57.9086478Z     },
2026-06-21T23:42:57.9086562Z     {
2026-06-21T23:42:57.9086658Z       "id": "REQ-INST-10",
2026-06-21T23:42:57.9086877Z       "title": "Qualified addressing [subnet:]id[@node] + ambiguity forces qualification",
2026-06-21T23:42:57.9087074Z       "requiredStages": [
2026-06-21T23:42:57.9087159Z         "impl",
2026-06-21T23:42:57.9087249Z         "unit"
2026-06-21T23:42:57.9087326Z       ],
2026-06-21T23:42:57.9087421Z       "stages": {
2026-06-21T23:42:57.9087507Z         "doc": {
2026-06-21T23:42:57.9087592Z           "complete": false,
2026-06-21T23:42:57.9087675Z           "evidence": []
2026-06-21T23:42:57.9087755Z         },
2026-06-21T23:42:57.9087840Z         "impl": {
2026-06-21T23:42:57.9087937Z           "complete": true,
2026-06-21T23:42:57.9088023Z           "evidence": [
2026-06-21T23:42:57.9088107Z             {
2026-06-21T23:42:57.9088241Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:42:57.9088324Z               "line": 648
2026-06-21T23:42:57.9088408Z             },
2026-06-21T23:42:57.9088483Z             {
2026-06-21T23:42:57.9088612Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:42:57.9088706Z               "line": 725
2026-06-21T23:42:57.9088781Z             },
2026-06-21T23:42:57.9088866Z             {
2026-06-21T23:42:57.9089063Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T23:42:57.9089167Z               "line": 13
2026-06-21T23:42:57.9089244Z             },
2026-06-21T23:42:57.9089330Z             {
2026-06-21T23:42:57.9089453Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T23:42:57.9089545Z               "line": 67
2026-06-21T23:42:57.9089630Z             },
2026-06-21T23:42:57.9089716Z             {
2026-06-21T23:42:57.9089830Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T23:42:57.9089912Z               "line": 18
2026-06-21T23:42:57.9090002Z             },
2026-06-21T23:42:57.9090082Z             {
2026-06-21T23:42:57.9090189Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T23:42:57.9090274Z               "line": 444
2026-06-21T23:42:57.9090351Z             }
2026-06-21T23:42:57.9090436Z           ]
2026-06-21T23:42:57.9090518Z         },
2026-06-21T23:42:57.9090603Z         "int": {
2026-06-21T23:42:57.9090703Z           "complete": false,
2026-06-21T23:42:57.9090784Z           "evidence": []
2026-06-21T23:42:57.9090867Z         },
2026-06-21T23:42:57.9090955Z         "unit": {
2026-06-21T23:42:57.9091046Z           "complete": true,
2026-06-21T23:42:57.9091133Z           "evidence": [
2026-06-21T23:42:57.9091219Z             {
2026-06-21T23:42:57.9091346Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:42:57.9091426Z               "line": 932
2026-06-21T23:42:57.9091508Z             },
2026-06-21T23:42:57.9091587Z             {
2026-06-21T23:42:57.9091705Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:42:57.9091801Z               "line": 1309
2026-06-21T23:42:57.9091892Z             },
2026-06-21T23:42:57.9091982Z             {
2026-06-21T23:42:57.9092102Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:42:57.9092197Z               "line": 1320
2026-06-21T23:42:57.9092278Z             },
2026-06-21T23:42:57.9092368Z             {
2026-06-21T23:42:57.9092484Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:42:57.9092574Z               "line": 1336
2026-06-21T23:42:57.9092654Z             },
2026-06-21T23:42:57.9092731Z             {
2026-06-21T23:42:57.9092850Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:42:57.9093046Z               "line": 1352
2026-06-21T23:42:57.9093132Z             },
2026-06-21T23:42:57.9093217Z             {
2026-06-21T23:42:57.9093341Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:42:57.9093438Z               "line": 1374
2026-06-21T23:42:57.9093517Z             },
2026-06-21T23:42:57.9093604Z             {
2026-06-21T23:42:57.9093719Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:42:57.9093804Z               "line": 1679
2026-06-21T23:42:57.9093894Z             },
2026-06-21T23:42:57.9093974Z             {
2026-06-21T23:42:57.9094084Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T23:42:57.9094272Z               "line": 130
2026-06-21T23:42:57.9094353Z             },
2026-06-21T23:42:57.9094431Z             {
2026-06-21T23:42:57.9094544Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T23:42:57.9094625Z               "line": 167
2026-06-21T23:42:57.9094702Z             },
2026-06-21T23:42:57.9094793Z             {
2026-06-21T23:42:57.9094906Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T23:42:57.9094993Z               "line": 175
2026-06-21T23:42:57.9095074Z             },
2026-06-21T23:42:57.9095164Z             {
2026-06-21T23:42:57.9095279Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-21T23:42:57.9095360Z               "line": 183
2026-06-21T23:42:57.9095450Z             },
2026-06-21T23:42:57.9095531Z             {
2026-06-21T23:42:57.9095637Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T23:42:57.9095727Z               "line": 896
2026-06-21T23:42:57.9095813Z             }
2026-06-21T23:42:57.9095908Z           ]
2026-06-21T23:42:57.9095990Z         }
2026-06-21T23:42:57.9096060Z       }
2026-06-21T23:42:57.9096147Z     },
2026-06-21T23:42:57.9096233Z     {
2026-06-21T23:42:57.9096324Z       "id": "REQ-INST-11",
2026-06-21T23:42:57.9096543Z       "title": "spt rename <id> rippled to all instances (collision-checked, 6.5-reconciled)",
2026-06-21T23:42:57.9096643Z       "requiredStages": [
2026-06-21T23:42:57.9096728Z         "impl",
2026-06-21T23:42:57.9096813Z         "unit"
2026-06-21T23:42:57.9096894Z       ],
2026-06-21T23:42:57.9096981Z       "stages": {
2026-06-21T23:42:57.9097061Z         "doc": {
2026-06-21T23:42:57.9097165Z           "complete": false,
2026-06-21T23:42:57.9097257Z           "evidence": []
2026-06-21T23:42:57.9097342Z         },
2026-06-21T23:42:57.9097428Z         "impl": {
2026-06-21T23:42:57.9097518Z           "complete": true,
2026-06-21T23:42:57.9097600Z           "evidence": [
2026-06-21T23:42:57.9097686Z             {
2026-06-21T23:42:57.9097814Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:42:57.9097915Z               "line": 514
2026-06-21T23:42:57.9098000Z             },
2026-06-21T23:42:57.9098076Z             {
2026-06-21T23:42:57.9098206Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T23:42:57.9098301Z               "line": 297
2026-06-21T23:42:57.9098387Z             },
2026-06-21T23:42:57.9098477Z             {
2026-06-21T23:42:57.9098592Z               "path": "crates/spt-store/src/rename.rs",
2026-06-21T23:42:57.9098672Z               "line": 59
2026-06-21T23:42:57.9098758Z             },
2026-06-21T23:42:57.9098836Z             {
2026-06-21T23:42:57.9099029Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9099114Z               "line": 5291
2026-06-21T23:42:57.9099201Z             },
2026-06-21T23:42:57.9099281Z             {
2026-06-21T23:42:57.9099380Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9099475Z               "line": 7137
2026-06-21T23:42:57.9099566Z             }
2026-06-21T23:42:57.9099647Z           ]
2026-06-21T23:42:57.9099723Z         },
2026-06-21T23:42:57.9099800Z         "int": {
2026-06-21T23:42:57.9099899Z           "complete": false,
2026-06-21T23:42:57.9099994Z           "evidence": []
2026-06-21T23:42:57.9100080Z         },
2026-06-21T23:42:57.9100167Z         "unit": {
2026-06-21T23:42:57.9100371Z           "complete": true,
2026-06-21T23:42:57.9100463Z           "evidence": [
2026-06-21T23:42:57.9100553Z             {
2026-06-21T23:42:57.9100676Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:42:57.9100758Z               "line": 1479
2026-06-21T23:42:57.9100839Z             },
2026-06-21T23:42:57.9100920Z             {
2026-06-21T23:42:57.9101034Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:42:57.9101116Z               "line": 1512
2026-06-21T23:42:57.9101205Z             },
2026-06-21T23:42:57.9101286Z             {
2026-06-21T23:42:57.9101412Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T23:42:57.9101601Z               "line": 527
2026-06-21T23:42:57.9101679Z             },
2026-06-21T23:42:57.9101760Z             {
2026-06-21T23:42:57.9101873Z               "path": "crates/spt-store/src/rename.rs",
2026-06-21T23:42:57.9101967Z               "line": 160
2026-06-21T23:42:57.9102044Z             },
2026-06-21T23:42:57.9102134Z             {
2026-06-21T23:42:57.9102251Z               "path": "crates/spt-store/src/rename.rs",
2026-06-21T23:42:57.9102328Z               "line": 190
2026-06-21T23:42:57.9102410Z             },
2026-06-21T23:42:57.9102495Z             {
2026-06-21T23:42:57.9102609Z               "path": "crates/spt-store/src/rename.rs",
2026-06-21T23:42:57.9102696Z               "line": 225
2026-06-21T23:42:57.9102771Z             },
2026-06-21T23:42:57.9102857Z             {
2026-06-21T23:42:57.9102967Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9103063Z               "line": 7994
2026-06-21T23:42:57.9103144Z             }
2026-06-21T23:42:57.9103224Z           ]
2026-06-21T23:42:57.9103310Z         }
2026-06-21T23:42:57.9103387Z       }
2026-06-21T23:42:57.9103468Z     },
2026-06-21T23:42:57.9103553Z     {
2026-06-21T23:42:57.9103650Z       "id": "REQ-INST-12",
2026-06-21T23:42:57.9103936Z       "title": "Endpoint visibility per-(endpoint,subnet): excluded semantics, OR-of-defaults + override, gates sync",
2026-06-21T23:42:57.9104045Z       "requiredStages": [
2026-06-21T23:42:57.9104125Z         "impl",
2026-06-21T23:42:57.9104211Z         "unit"
2026-06-21T23:42:57.9104299Z       ],
2026-06-21T23:42:57.9104383Z       "stages": {
2026-06-21T23:42:57.9104468Z         "doc": {
2026-06-21T23:42:57.9104553Z           "complete": false,
2026-06-21T23:42:57.9104644Z           "evidence": []
2026-06-21T23:42:57.9104719Z         },
2026-06-21T23:42:57.9104804Z         "impl": {
2026-06-21T23:42:57.9104899Z           "complete": true,
2026-06-21T23:42:57.9104981Z           "evidence": [
2026-06-21T23:42:57.9105062Z             {
2026-06-21T23:42:57.9105190Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:42:57.9105272Z               "line": 566
2026-06-21T23:42:57.9105367Z             },
2026-06-21T23:42:57.9105443Z             {
2026-06-21T23:42:57.9105568Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:42:57.9105658Z               "line": 659
2026-06-21T23:42:57.9105748Z             },
2026-06-21T23:42:57.9105839Z             {
2026-06-21T23:42:57.9105958Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:42:57.9106053Z               "line": 739
2026-06-21T23:42:57.9106134Z             },
2026-06-21T23:42:57.9106222Z             {
2026-06-21T23:42:57.9106340Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T23:42:57.9106435Z               "line": 96
2026-06-21T23:42:57.9106522Z             },
2026-06-21T23:42:57.9106606Z             {
2026-06-21T23:42:57.9106725Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T23:42:57.9106817Z               "line": 269
2026-06-21T23:42:57.9106907Z             },
2026-06-21T23:42:57.9106987Z             {
2026-06-21T23:42:57.9107103Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T23:42:57.9107203Z               "line": 148
2026-06-21T23:42:57.9107278Z             }
2026-06-21T23:42:57.9107363Z           ]
2026-06-21T23:42:57.9107541Z         },
2026-06-21T23:42:57.9107635Z         "int": {
2026-06-21T23:42:57.9107720Z           "complete": false,
2026-06-21T23:42:57.9107812Z           "evidence": []
2026-06-21T23:42:57.9107898Z         },
2026-06-21T23:42:57.9107983Z         "unit": {
2026-06-21T23:42:57.9108069Z           "complete": true,
2026-06-21T23:42:57.9108165Z           "evidence": [
2026-06-21T23:42:57.9108246Z             {
2026-06-21T23:42:57.9108364Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:42:57.9108456Z               "line": 1554
2026-06-21T23:42:57.9108547Z             },
2026-06-21T23:42:57.9108618Z             {
2026-06-21T23:42:57.9108833Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:42:57.9108918Z               "line": 1577
2026-06-21T23:42:57.9109086Z             },
2026-06-21T23:42:57.9109167Z             {
2026-06-21T23:42:57.9109280Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:42:57.9109381Z               "line": 1614
2026-06-21T23:42:57.9109472Z             },
2026-06-21T23:42:57.9109556Z             {
2026-06-21T23:42:57.9109665Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T23:42:57.9109761Z               "line": 457
2026-06-21T23:42:57.9109845Z             },
2026-06-21T23:42:57.9109930Z             {
2026-06-21T23:42:57.9110050Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T23:42:57.9110131Z               "line": 185
2026-06-21T23:42:57.9110212Z             },
2026-06-21T23:42:57.9110297Z             {
2026-06-21T23:42:57.9110418Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T23:42:57.9110512Z               "line": 206
2026-06-21T23:42:57.9110592Z             },
2026-06-21T23:42:57.9110675Z             {
2026-06-21T23:42:57.9110788Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T23:42:57.9110879Z               "line": 232
2026-06-21T23:42:57.9110960Z             }
2026-06-21T23:42:57.9111042Z           ]
2026-06-21T23:42:57.9111127Z         }
2026-06-21T23:42:57.9111212Z       }
2026-06-21T23:42:57.9111294Z     },
2026-06-21T23:42:57.9111376Z     {
2026-06-21T23:42:57.9111466Z       "id": "REQ-INST-13",
2026-06-21T23:42:57.9111643Z       "title": "Subnet-exclusive sync + per-endpoint subnet-membership list",
2026-06-21T23:42:57.9111733Z       "requiredStages": [
2026-06-21T23:42:57.9111819Z         "impl",
2026-06-21T23:42:57.9111900Z         "unit"
2026-06-21T23:42:57.9111977Z       ],
2026-06-21T23:42:57.9112067Z       "stages": {
2026-06-21T23:42:57.9112148Z         "doc": {
2026-06-21T23:42:57.9112239Z           "complete": false,
2026-06-21T23:42:57.9112335Z           "evidence": []
2026-06-21T23:42:57.9112423Z         },
2026-06-21T23:42:57.9112513Z         "impl": {
2026-06-21T23:42:57.9112609Z           "complete": true,
2026-06-21T23:42:57.9112699Z           "evidence": [
2026-06-21T23:42:57.9112778Z             {
2026-06-21T23:42:57.9112888Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T23:42:57.9112979Z               "line": 100
2026-06-21T23:42:57.9113056Z             },
2026-06-21T23:42:57.9113140Z             {
2026-06-21T23:42:57.9113266Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T23:42:57.9113351Z               "line": 171
2026-06-21T23:42:57.9113436Z             }
2026-06-21T23:42:57.9113517Z           ]
2026-06-21T23:42:57.9113604Z         },
2026-06-21T23:42:57.9113690Z         "int": {
2026-06-21T23:42:57.9113779Z           "complete": false,
2026-06-21T23:42:57.9113871Z           "evidence": []
2026-06-21T23:42:57.9113943Z         },
2026-06-21T23:42:57.9114033Z         "unit": {
2026-06-21T23:42:57.9114133Z           "complete": true,
2026-06-21T23:42:57.9114219Z           "evidence": [
2026-06-21T23:42:57.9114304Z             {
2026-06-21T23:42:57.9114423Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T23:42:57.9114510Z               "line": 261
2026-06-21T23:42:57.9114591Z             },
2026-06-21T23:42:57.9114781Z             {
2026-06-21T23:42:57.9114883Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-21T23:42:57.9114976Z               "line": 279
2026-06-21T23:42:57.9115066Z             }
2026-06-21T23:42:57.9115152Z           ]
2026-06-21T23:42:57.9115237Z         }
2026-06-21T23:42:57.9115321Z       }
2026-06-21T23:42:57.9115411Z     },
2026-06-21T23:42:57.9115493Z     {
2026-06-21T23:42:57.9115589Z       "id": "REQ-INST-14",
2026-06-21T23:42:57.9115960Z       "title": "Resource advertisement (subnet resource registry): free-text blurb, both-authored, registry projection, visibility/whitelist-gated",
2026-06-21T23:42:57.9116060Z       "requiredStages": [
2026-06-21T23:42:57.9116247Z         "doc",
2026-06-21T23:42:57.9116341Z         "impl",
2026-06-21T23:42:57.9116433Z         "unit"
2026-06-21T23:42:57.9116513Z       ],
2026-06-21T23:42:57.9116604Z       "stages": {
2026-06-21T23:42:57.9116694Z         "doc": {
2026-06-21T23:42:57.9116791Z           "complete": true,
2026-06-21T23:42:57.9116890Z           "evidence": [
2026-06-21T23:42:57.9116971Z             {
2026-06-21T23:42:57.9117077Z               "path": "CONTEXT.md",
2026-06-21T23:42:57.9117166Z               "line": 588
2026-06-21T23:42:57.9117247Z             },
2026-06-21T23:42:57.9117333Z             {
2026-06-21T23:42:57.9117426Z               "path": "docs/STORAGE.md",
2026-06-21T23:42:57.9117519Z               "line": 49
2026-06-21T23:42:57.9117605Z             }
2026-06-21T23:42:57.9117692Z           ]
2026-06-21T23:42:57.9117769Z         },
2026-06-21T23:42:57.9117852Z         "impl": {
2026-06-21T23:42:57.9117952Z           "complete": true,
2026-06-21T23:42:57.9118038Z           "evidence": [
2026-06-21T23:42:57.9118130Z             {
2026-06-21T23:42:57.9118262Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:42:57.9118353Z               "line": 410
2026-06-21T23:42:57.9118435Z             },
2026-06-21T23:42:57.9118524Z             {
2026-06-21T23:42:57.9118649Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:42:57.9118735Z               "line": 367
2026-06-21T23:42:57.9118816Z             },
2026-06-21T23:42:57.9118896Z             {
2026-06-21T23:42:57.9119097Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T23:42:57.9119178Z               "line": 293
2026-06-21T23:42:57.9119268Z             },
2026-06-21T23:42:57.9119355Z             {
2026-06-21T23:42:57.9119459Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9119549Z               "line": 1577
2026-06-21T23:42:57.9119627Z             }
2026-06-21T23:42:57.9119712Z           ]
2026-06-21T23:42:57.9119797Z         },
2026-06-21T23:42:57.9119878Z         "int": {
2026-06-21T23:42:57.9119980Z           "complete": false,
2026-06-21T23:42:57.9120074Z           "evidence": []
2026-06-21T23:42:57.9120159Z         },
2026-06-21T23:42:57.9120240Z         "unit": {
2026-06-21T23:42:57.9120340Z           "complete": true,
2026-06-21T23:42:57.9120429Z           "evidence": [
2026-06-21T23:42:57.9120514Z             {
2026-06-21T23:42:57.9120643Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:42:57.9120734Z               "line": 1163
2026-06-21T23:42:57.9120823Z             },
2026-06-21T23:42:57.9120905Z             {
2026-06-21T23:42:57.9121025Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:42:57.9121110Z               "line": 944
2026-06-21T23:42:57.9121196Z             },
2026-06-21T23:42:57.9121278Z             {
2026-06-21T23:42:57.9121387Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:42:57.9121481Z               "line": 1205
2026-06-21T23:42:57.9121569Z             },
2026-06-21T23:42:57.9121650Z             {
2026-06-21T23:42:57.9121759Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T23:42:57.9121854Z               "line": 659
2026-06-21T23:42:57.9121936Z             },
2026-06-21T23:42:57.9122021Z             {
2026-06-21T23:42:57.9122121Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9122307Z               "line": 8070
2026-06-21T23:42:57.9122393Z             }
2026-06-21T23:42:57.9122474Z           ]
2026-06-21T23:42:57.9122561Z         }
2026-06-21T23:42:57.9122645Z       }
2026-06-21T23:42:57.9122732Z     },
2026-06-21T23:42:57.9122823Z     {
2026-06-21T23:42:57.9122909Z       "id": "REQ-INST-15",
2026-06-21T23:42:57.9123616Z       "title": "Immutable home subnet (assigned at creation: auto-if-one/ask-if-many) + spt fork (cross-subnet clone to a new identity, copy-then-diverge, not re-home); adapter chosen at creation from registered hostable adapters, changed only via launch/resume-under-new (ADR-0010)",
2026-06-21T23:42:57.9123821Z       "requiredStages": [
2026-06-21T23:42:57.9123901Z         "doc",
2026-06-21T23:42:57.9123996Z         "impl",
2026-06-21T23:42:57.9124082Z         "unit"
2026-06-21T23:42:57.9124164Z       ],
2026-06-21T23:42:57.9124250Z       "stages": {
2026-06-21T23:42:57.9124334Z         "doc": {
2026-06-21T23:42:57.9124431Z           "complete": true,
2026-06-21T23:42:57.9124512Z           "evidence": [
2026-06-21T23:42:57.9124598Z             {
2026-06-21T23:42:57.9124770Z               "path": "docs/adr/0010-immutable-home-subnet-fork-not-rehome.md",
2026-06-21T23:42:57.9124869Z               "line": 3
2026-06-21T23:42:57.9124955Z             }
2026-06-21T23:42:57.9125036Z           ]
2026-06-21T23:42:57.9125128Z         },
2026-06-21T23:42:57.9125212Z         "impl": {
2026-06-21T23:42:57.9125308Z           "complete": true,
2026-06-21T23:42:57.9125395Z           "evidence": [
2026-06-21T23:42:57.9125485Z             {
2026-06-21T23:42:57.9125607Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:42:57.9125707Z               "line": 353
2026-06-21T23:42:57.9125788Z             },
2026-06-21T23:42:57.9125872Z             {
2026-06-21T23:42:57.9125985Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T23:42:57.9126072Z               "line": 60
2026-06-21T23:42:57.9126164Z             },
2026-06-21T23:42:57.9126253Z             {
2026-06-21T23:42:57.9126388Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T23:42:57.9126483Z               "line": 368
2026-06-21T23:42:57.9126567Z             },
2026-06-21T23:42:57.9126654Z             {
2026-06-21T23:42:57.9126764Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T23:42:57.9126858Z               "line": 417
2026-06-21T23:42:57.9126935Z             },
2026-06-21T23:42:57.9127022Z             {
2026-06-21T23:42:57.9127135Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T23:42:57.9127221Z               "line": 19
2026-06-21T23:42:57.9127308Z             },
2026-06-21T23:42:57.9127398Z             {
2026-06-21T23:42:57.9127507Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T23:42:57.9127593Z               "line": 70
2026-06-21T23:42:57.9127685Z             },
2026-06-21T23:42:57.9127774Z             {
2026-06-21T23:42:57.9127879Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T23:42:57.9127971Z               "line": 96
2026-06-21T23:42:57.9128056Z             },
2026-06-21T23:42:57.9128137Z             {
2026-06-21T23:42:57.9128243Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T23:42:57.9128334Z               "line": 121
2026-06-21T23:42:57.9128417Z             },
2026-06-21T23:42:57.9128493Z             {
2026-06-21T23:42:57.9128603Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T23:42:57.9128690Z               "line": 172
2026-06-21T23:42:57.9128765Z             },
2026-06-21T23:42:57.9128855Z             {
2026-06-21T23:42:57.9129047Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:42:57.9129156Z               "line": 178
2026-06-21T23:42:57.9129238Z             },
2026-06-21T23:42:57.9129328Z             {
2026-06-21T23:42:57.9129423Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9129524Z               "line": 1469
2026-06-21T23:42:57.9129610Z             }
2026-06-21T23:42:57.9129700Z           ]
2026-06-21T23:42:57.9129887Z         },
2026-06-21T23:42:57.9129962Z         "int": {
2026-06-21T23:42:57.9130067Z           "complete": false,
2026-06-21T23:42:57.9130148Z           "evidence": []
2026-06-21T23:42:57.9130226Z         },
2026-06-21T23:42:57.9130315Z         "unit": {
2026-06-21T23:42:57.9130396Z           "complete": true,
2026-06-21T23:42:57.9130487Z           "evidence": [
2026-06-21T23:42:57.9130573Z             {
2026-06-21T23:42:57.9130696Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T23:42:57.9130776Z               "line": 577
2026-06-21T23:42:57.9130867Z             },
2026-06-21T23:42:57.9130961Z             {
2026-06-21T23:42:57.9131175Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T23:42:57.9131261Z               "line": 638
2026-06-21T23:42:57.9131346Z             },
2026-06-21T23:42:57.9131432Z             {
2026-06-21T23:42:57.9131542Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T23:42:57.9131632Z               "line": 213
2026-06-21T23:42:57.9131722Z             },
2026-06-21T23:42:57.9131805Z             {
2026-06-21T23:42:57.9131919Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T23:42:57.9132004Z               "line": 249
2026-06-21T23:42:57.9132085Z             },
2026-06-21T23:42:57.9132167Z             {
2026-06-21T23:42:57.9132276Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T23:42:57.9132356Z               "line": 262
2026-06-21T23:42:57.9132444Z             },
2026-06-21T23:42:57.9132529Z             {
2026-06-21T23:42:57.9132638Z               "path": "crates/spt-store/src/home.rs",
2026-06-21T23:42:57.9132734Z               "line": 338
2026-06-21T23:42:57.9132825Z             },
2026-06-21T23:42:57.9132905Z             {
2026-06-21T23:42:57.9133020Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:42:57.9133116Z               "line": 690
2026-06-21T23:42:57.9133205Z             },
2026-06-21T23:42:57.9133282Z             {
2026-06-21T23:42:57.9133398Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9133483Z               "line": 8007
2026-06-21T23:42:57.9133572Z             },
2026-06-21T23:42:57.9133657Z             {
2026-06-21T23:42:57.9133758Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9133856Z               "line": 9837
2026-06-21T23:42:57.9133936Z             }
2026-06-21T23:42:57.9134023Z           ]
2026-06-21T23:42:57.9134109Z         }
2026-06-21T23:42:57.9134194Z       }
2026-06-21T23:42:57.9134284Z     },
2026-06-21T23:42:57.9134352Z     {
2026-06-21T23:42:57.9134448Z       "id": "REQ-INST-2",
2026-06-21T23:42:57.9134570Z       "title": "Per-node files, synced Psyche mind",
2026-06-21T23:42:57.9134672Z       "requiredStages": [
2026-06-21T23:42:57.9134748Z         "impl",
2026-06-21T23:42:57.9134829Z         "unit"
2026-06-21T23:42:57.9134918Z       ],
2026-06-21T23:42:57.9135001Z       "stages": {
2026-06-21T23:42:57.9135091Z         "doc": {
2026-06-21T23:42:57.9135181Z           "complete": false,
2026-06-21T23:42:57.9135277Z           "evidence": []
2026-06-21T23:42:57.9135354Z         },
2026-06-21T23:42:57.9135448Z         "impl": {
2026-06-21T23:42:57.9135543Z           "complete": true,
2026-06-21T23:42:57.9135621Z           "evidence": [
2026-06-21T23:42:57.9135702Z             {
2026-06-21T23:42:57.9135825Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T23:42:57.9135921Z               "line": 108
2026-06-21T23:42:57.9136007Z             },
2026-06-21T23:42:57.9136097Z             {
2026-06-21T23:42:57.9136215Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T23:42:57.9136300Z               "line": 28
2026-06-21T23:42:57.9136395Z             },
2026-06-21T23:42:57.9136479Z             {
2026-06-21T23:42:57.9136594Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T23:42:57.9136671Z               "line": 74
2026-06-21T23:42:57.9136766Z             },
2026-06-21T23:42:57.9136851Z             {
2026-06-21T23:42:57.9136957Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T23:42:57.9137214Z               "line": 96
2026-06-21T23:42:57.9137300Z             },
2026-06-21T23:42:57.9137386Z             {
2026-06-21T23:42:57.9137490Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T23:42:57.9137577Z               "line": 86
2026-06-21T23:42:57.9137662Z             },
2026-06-21T23:42:57.9137748Z             {
2026-06-21T23:42:57.9137868Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-21T23:42:57.9137958Z               "line": 118
2026-06-21T23:42:57.9138049Z             }
2026-06-21T23:42:57.9138134Z           ]
2026-06-21T23:42:57.9138226Z         },
2026-06-21T23:42:57.9138387Z         "int": {
2026-06-21T23:42:57.9138483Z           "complete": false,
2026-06-21T23:42:57.9138579Z           "evidence": []
2026-06-21T23:42:57.9138663Z         },
2026-06-21T23:42:57.9138744Z         "unit": {
2026-06-21T23:42:57.9138841Z           "complete": true,
2026-06-21T23:42:57.9138936Z           "evidence": [
2026-06-21T23:42:57.9139149Z             {
2026-06-21T23:42:57.9139255Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-21T23:42:57.9139349Z               "line": 250
2026-06-21T23:42:57.9139434Z             },
2026-06-21T23:42:57.9139522Z             {
2026-06-21T23:42:57.9139631Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T23:42:57.9139716Z               "line": 280
2026-06-21T23:42:57.9139803Z             }
2026-06-21T23:42:57.9139888Z           ]
2026-06-21T23:42:57.9139978Z         }
2026-06-21T23:42:57.9140054Z       }
2026-06-21T23:42:57.9140142Z     },
2026-06-21T23:42:57.9140222Z     {
2026-06-21T23:42:57.9140326Z       "id": "REQ-INST-3",
2026-06-21T23:42:57.9140490Z       "title": "Dormant (warm) / suspended (cold) resting states",
2026-06-21T23:42:57.9140594Z       "requiredStages": [
2026-06-21T23:42:57.9140675Z         "doc",
2026-06-21T23:42:57.9140757Z         "impl",
2026-06-21T23:42:57.9140842Z         "unit"
2026-06-21T23:42:57.9140927Z       ],
2026-06-21T23:42:57.9141027Z       "stages": {
2026-06-21T23:42:57.9141120Z         "doc": {
2026-06-21T23:42:57.9141203Z           "complete": true,
2026-06-21T23:42:57.9141303Z           "evidence": [
2026-06-21T23:42:57.9141379Z             {
2026-06-21T23:42:57.9141502Z               "path": "docs/DORMANCY-BUDGET.md",
2026-06-21T23:42:57.9141582Z               "line": 3
2026-06-21T23:42:57.9141667Z             }
2026-06-21T23:42:57.9141754Z           ]
2026-06-21T23:42:57.9141836Z         },
2026-06-21T23:42:57.9141930Z         "impl": {
2026-06-21T23:42:57.9142021Z           "complete": true,
2026-06-21T23:42:57.9142107Z           "evidence": [
2026-06-21T23:42:57.9142202Z             {
2026-06-21T23:42:57.9142326Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T23:42:57.9142422Z               "line": 60
2026-06-21T23:42:57.9142502Z             },
2026-06-21T23:42:57.9142593Z             {
2026-06-21T23:42:57.9142713Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T23:42:57.9142817Z               "line": 480
2026-06-21T23:42:57.9142898Z             },
2026-06-21T23:42:57.9142979Z             {
2026-06-21T23:42:57.9143117Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T23:42:57.9143208Z               "line": 254
2026-06-21T23:42:57.9143290Z             },
2026-06-21T23:42:57.9143376Z             {
2026-06-21T23:42:57.9143504Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T23:42:57.9143600Z               "line": 384
2026-06-21T23:42:57.9143686Z             },
2026-06-21T23:42:57.9143780Z             {
2026-06-21T23:42:57.9143895Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T23:42:57.9143991Z               "line": 418
2026-06-21T23:42:57.9144076Z             },
2026-06-21T23:42:57.9144165Z             {
2026-06-21T23:42:57.9144285Z               "path": "crates/spt-daemon/src/pump/sync.rs",
2026-06-21T23:42:57.9144374Z               "line": 74
2026-06-21T23:42:57.9144459Z             },
2026-06-21T23:42:57.9144645Z             {
2026-06-21T23:42:57.9144783Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:42:57.9144864Z               "line": 234
2026-06-21T23:42:57.9144950Z             },
2026-06-21T23:42:57.9145036Z             {
2026-06-21T23:42:57.9145159Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:42:57.9145261Z               "line": 396
2026-06-21T23:42:57.9145346Z             },
2026-06-21T23:42:57.9145426Z             {
2026-06-21T23:42:57.9145551Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T23:42:57.9145632Z               "line": 45
2026-06-21T23:42:57.9145718Z             },
2026-06-21T23:42:57.9145890Z             {
2026-06-21T23:42:57.9146018Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T23:42:57.9146099Z               "line": 114
2026-06-21T23:42:57.9146191Z             },
2026-06-21T23:42:57.9146262Z             {
2026-06-21T23:42:57.9146380Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T23:42:57.9146472Z               "line": 152
2026-06-21T23:42:57.9146553Z             },
2026-06-21T23:42:57.9146643Z             {
2026-06-21T23:42:57.9146756Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T23:42:57.9146852Z               "line": 168
2026-06-21T23:42:57.9146936Z             },
2026-06-21T23:42:57.9147025Z             {
2026-06-21T23:42:57.9147145Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T23:42:57.9147236Z               "line": 178
2026-06-21T23:42:57.9147321Z             },
2026-06-21T23:42:57.9147406Z             {
2026-06-21T23:42:57.9147527Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T23:42:57.9147622Z               "line": 210
2026-06-21T23:42:57.9147702Z             },
2026-06-21T23:42:57.9147794Z             {
2026-06-21T23:42:57.9147903Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T23:42:57.9148003Z               "line": 287
2026-06-21T23:42:57.9148089Z             },
2026-06-21T23:42:57.9150891Z             {
2026-06-21T23:42:57.9151059Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T23:42:57.9151159Z               "line": 311
2026-06-21T23:42:57.9151249Z             },
2026-06-21T23:42:57.9151331Z             {
2026-06-21T23:42:57.9151458Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T23:42:57.9151554Z               "line": 389
2026-06-21T23:42:57.9151641Z             },
2026-06-21T23:42:57.9151722Z             {
2026-06-21T23:42:57.9151840Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T23:42:57.9151930Z               "line": 438
2026-06-21T23:42:57.9152016Z             },
2026-06-21T23:42:57.9152095Z             {
2026-06-21T23:42:57.9152204Z               "path": "crates/spt-daemon/tests/budget.rs",
2026-06-21T23:42:57.9152305Z               "line": 37
2026-06-21T23:42:57.9152396Z             },
2026-06-21T23:42:57.9152476Z             {
2026-06-21T23:42:57.9152605Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:42:57.9152705Z               "line": 62
2026-06-21T23:42:57.9152790Z             },
2026-06-21T23:42:57.9152871Z             {
2026-06-21T23:42:57.9152987Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T23:42:57.9153067Z               "line": 279
2026-06-21T23:42:57.9153153Z             },
2026-06-21T23:42:57.9153235Z             {
2026-06-21T23:42:57.9153344Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9153443Z               "line": 1848
2026-06-21T23:42:57.9153520Z             }
2026-06-21T23:42:57.9153598Z           ]
2026-06-21T23:42:57.9153682Z         },
2026-06-21T23:42:57.9153768Z         "int": {
2026-06-21T23:42:57.9153869Z           "complete": false,
2026-06-21T23:42:57.9153959Z           "evidence": []
2026-06-21T23:42:57.9154040Z         },
2026-06-21T23:42:57.9154126Z         "unit": {
2026-06-21T23:42:57.9154218Z           "complete": true,
2026-06-21T23:42:57.9154316Z           "evidence": [
2026-06-21T23:42:57.9154523Z             {
2026-06-21T23:42:57.9154654Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T23:42:57.9154740Z               "line": 360
2026-06-21T23:42:57.9154825Z             },
2026-06-21T23:42:57.9154911Z             {
2026-06-21T23:42:57.9155038Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T23:42:57.9155133Z               "line": 837
2026-06-21T23:42:57.9155210Z             },
2026-06-21T23:42:57.9155296Z             {
2026-06-21T23:42:57.9155424Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T23:42:57.9155515Z               "line": 894
2026-06-21T23:42:57.9155596Z             },
2026-06-21T23:42:57.9155787Z             {
2026-06-21T23:42:57.9155916Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T23:42:57.9156006Z               "line": 889
2026-06-21T23:42:57.9156097Z             },
2026-06-21T23:42:57.9156183Z             {
2026-06-21T23:42:57.9156306Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T23:42:57.9156402Z               "line": 1014
2026-06-21T23:42:57.9156493Z             },
2026-06-21T23:42:57.9156583Z             {
2026-06-21T23:42:57.9156712Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:42:57.9156803Z               "line": 1264
2026-06-21T23:42:57.9156888Z             },
2026-06-21T23:42:57.9156974Z             {
2026-06-21T23:42:57.9157095Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:42:57.9157184Z               "line": 1405
2026-06-21T23:42:57.9157268Z             },
2026-06-21T23:42:57.9157349Z             {
2026-06-21T23:42:57.9157473Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T23:42:57.9157567Z               "line": 449
2026-06-21T23:42:57.9157652Z             },
2026-06-21T23:42:57.9157734Z             {
2026-06-21T23:42:57.9157853Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T23:42:57.9157942Z               "line": 485
2026-06-21T23:42:57.9158014Z             },
2026-06-21T23:42:57.9158101Z             {
2026-06-21T23:42:57.9158215Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T23:42:57.9158305Z               "line": 540
2026-06-21T23:42:57.9158382Z             },
2026-06-21T23:42:57.9158468Z             {
2026-06-21T23:42:57.9158582Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T23:42:57.9158669Z               "line": 697
2026-06-21T23:42:57.9158759Z             },
2026-06-21T23:42:57.9158845Z             {
2026-06-21T23:42:57.9159041Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T23:42:57.9159135Z               "line": 931
2026-06-21T23:42:57.9159216Z             },
2026-06-21T23:42:57.9159303Z             {
2026-06-21T23:42:57.9159407Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T23:42:57.9159493Z               "line": 945
2026-06-21T23:42:57.9159579Z             },
2026-06-21T23:42:57.9159661Z             {
2026-06-21T23:42:57.9159784Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:42:57.9159874Z               "line": 1290
2026-06-21T23:42:57.9159957Z             },
2026-06-21T23:42:57.9160033Z             {
2026-06-21T23:42:57.9160145Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T23:42:57.9160230Z               "line": 609
2026-06-21T23:42:57.9160312Z             },
2026-06-21T23:42:57.9160399Z             {
2026-06-21T23:42:57.9160507Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9160594Z               "line": 8031
2026-06-21T23:42:57.9160666Z             }
2026-06-21T23:42:57.9160751Z           ]
2026-06-21T23:42:57.9160831Z         }
2026-06-21T23:42:57.9160914Z       }
2026-06-21T23:42:57.9160999Z     },
2026-06-21T23:42:57.9161085Z     {
2026-06-21T23:42:57.9161175Z       "id": "REQ-INST-4",
2026-06-21T23:42:57.9161347Z       "title": "active to dormant/suspended fires a transition echo commune",
2026-06-21T23:42:57.9161446Z       "requiredStages": [
2026-06-21T23:42:57.9161528Z         "impl",
2026-06-21T23:42:57.9161729Z         "unit"
2026-06-21T23:42:57.9161814Z       ],
2026-06-21T23:42:57.9161901Z       "stages": {
2026-06-21T23:42:57.9161981Z         "doc": {
2026-06-21T23:42:57.9162086Z           "complete": false,
2026-06-21T23:42:57.9162177Z           "evidence": []
2026-06-21T23:42:57.9162254Z         },
2026-06-21T23:42:57.9162338Z         "impl": {
2026-06-21T23:42:57.9162433Z           "complete": true,
2026-06-21T23:42:57.9162519Z           "evidence": [
2026-06-21T23:42:57.9162609Z             {
2026-06-21T23:42:57.9162731Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T23:42:57.9162827Z               "line": 385
2026-06-21T23:42:57.9163007Z             },
2026-06-21T23:42:57.9163093Z             {
2026-06-21T23:42:57.9163209Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T23:42:57.9163299Z               "line": 202
2026-06-21T23:42:57.9163379Z             },
2026-06-21T23:42:57.9163461Z             {
2026-06-21T23:42:57.9163575Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T23:42:57.9163665Z               "line": 234
2026-06-21T23:42:57.9163751Z             },
2026-06-21T23:42:57.9163833Z             {
2026-06-21T23:42:57.9163943Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T23:42:57.9164027Z               "line": 274
2026-06-21T23:42:57.9164114Z             }
2026-06-21T23:42:57.9164191Z           ]
2026-06-21T23:42:57.9164276Z         },
2026-06-21T23:42:57.9164366Z         "int": {
2026-06-21T23:42:57.9164463Z           "complete": false,
2026-06-21T23:42:57.9164552Z           "evidence": []
2026-06-21T23:42:57.9164638Z         },
2026-06-21T23:42:57.9164730Z         "unit": {
2026-06-21T23:42:57.9164825Z           "complete": true,
2026-06-21T23:42:57.9164905Z           "evidence": [
2026-06-21T23:42:57.9164991Z             {
2026-06-21T23:42:57.9165117Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T23:42:57.9165205Z               "line": 889
2026-06-21T23:42:57.9165291Z             },
2026-06-21T23:42:57.9165376Z             {
2026-06-21T23:42:57.9165490Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T23:42:57.9165569Z               "line": 561
2026-06-21T23:42:57.9165659Z             },
2026-06-21T23:42:57.9165746Z             {
2026-06-21T23:42:57.9165860Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T23:42:57.9165946Z               "line": 668
2026-06-21T23:42:57.9166037Z             },
2026-06-21T23:42:57.9166123Z             {
2026-06-21T23:42:57.9166246Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T23:42:57.9166318Z               "line": 750
2026-06-21T23:42:57.9166405Z             }
2026-06-21T23:42:57.9166490Z           ]
2026-06-21T23:42:57.9166575Z         }
2026-06-21T23:42:57.9166662Z       }
2026-06-21T23:42:57.9166748Z     },
2026-06-21T23:42:57.9166833Z     {
2026-06-21T23:42:57.9166914Z       "id": "REQ-INST-5",
2026-06-21T23:42:57.9167091Z       "title": "Two-tier context sync (live to all, project to same-project)",
2026-06-21T23:42:57.9167195Z       "requiredStages": [
2026-06-21T23:42:57.9167287Z         "impl",
2026-06-21T23:42:57.9167368Z         "unit",
2026-06-21T23:42:57.9167462Z         "int"
2026-06-21T23:42:57.9167549Z       ],
2026-06-21T23:42:57.9167630Z       "stages": {
2026-06-21T23:42:57.9167721Z         "doc": {
2026-06-21T23:42:57.9167810Z           "complete": false,
2026-06-21T23:42:57.9167900Z           "evidence": []
2026-06-21T23:42:57.9167986Z         },
2026-06-21T23:42:57.9168066Z         "impl": {
2026-06-21T23:42:57.9168151Z           "complete": true,
2026-06-21T23:42:57.9168241Z           "evidence": [
2026-06-21T23:42:57.9168327Z             {
2026-06-21T23:42:57.9168451Z               "path": "crates/spt-daemon/src/pump/sync.rs",
2026-06-21T23:42:57.9168536Z               "line": 85
2026-06-21T23:42:57.9168619Z             },
2026-06-21T23:42:57.9168704Z             {
2026-06-21T23:42:57.9168818Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T23:42:57.9169104Z               "line": 68
2026-06-21T23:42:57.9169190Z             },
2026-06-21T23:42:57.9169272Z             {
2026-06-21T23:42:57.9169381Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T23:42:57.9169457Z               "line": 99
2026-06-21T23:42:57.9169548Z             },
2026-06-21T23:42:57.9169629Z             {
2026-06-21T23:42:57.9169734Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T23:42:57.9169824Z               "line": 183
2026-06-21T23:42:57.9169906Z             },
2026-06-21T23:42:57.9169991Z             {
2026-06-21T23:42:57.9170101Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T23:42:57.9170296Z               "line": 314
2026-06-21T23:42:57.9170382Z             }
2026-06-21T23:42:57.9170464Z           ]
2026-06-21T23:42:57.9170550Z         },
2026-06-21T23:42:57.9170635Z         "int": {
2026-06-21T23:42:57.9170719Z           "complete": true,
2026-06-21T23:42:57.9170800Z           "evidence": [
2026-06-21T23:42:57.9170882Z             {
2026-06-21T23:42:57.9171011Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T23:42:57.9171101Z               "line": 156
2026-06-21T23:42:57.9171182Z             },
2026-06-21T23:42:57.9171268Z             {
2026-06-21T23:42:57.9171386Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-21T23:42:57.9171469Z               "line": 145
2026-06-21T23:42:57.9171555Z             },
2026-06-21T23:42:57.9171640Z             {
2026-06-21T23:42:57.9171759Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T23:42:57.9171850Z               "line": 707
2026-06-21T23:42:57.9171930Z             },
2026-06-21T23:42:57.9172016Z             {
2026-06-21T23:42:57.9172123Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T23:42:57.9172213Z               "line": 1069
2026-06-21T23:42:57.9172303Z             }
2026-06-21T23:42:57.9172384Z           ]
2026-06-21T23:42:57.9172466Z         },
2026-06-21T23:42:57.9172556Z         "unit": {
2026-06-21T23:42:57.9172651Z           "complete": true,
2026-06-21T23:42:57.9172737Z           "evidence": [
2026-06-21T23:42:57.9172828Z             {
2026-06-21T23:42:57.9172940Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T23:42:57.9173026Z               "line": 552
2026-06-21T23:42:57.9173112Z             },
2026-06-21T23:42:57.9173192Z             {
2026-06-21T23:42:57.9173301Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T23:42:57.9173387Z               "line": 595
2026-06-21T23:42:57.9173473Z             },
2026-06-21T23:42:57.9173549Z             {
2026-06-21T23:42:57.9173663Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T23:42:57.9173744Z               "line": 219
2026-06-21T23:42:57.9173830Z             }
2026-06-21T23:42:57.9173906Z           ]
2026-06-21T23:42:57.9173982Z         }
2026-06-21T23:42:57.9174064Z       }
2026-06-21T23:42:57.9174154Z     },
2026-06-21T23:42:57.9174235Z     {
2026-06-21T23:42:57.9174336Z       "id": "REQ-INST-6",
2026-06-21T23:42:57.9174517Z       "title": "Deferred messages not delivered to dormant/suspended instances",
2026-06-21T23:42:57.9174612Z       "requiredStages": [
2026-06-21T23:42:57.9174698Z         "impl",
2026-06-21T23:42:57.9174784Z         "unit",
2026-06-21T23:42:57.9174869Z         "int"
2026-06-21T23:42:57.9174950Z       ],
2026-06-21T23:42:57.9175033Z       "stages": {
2026-06-21T23:42:57.9175122Z         "doc": {
2026-06-21T23:42:57.9175212Z           "complete": true,
2026-06-21T23:42:57.9175295Z           "evidence": [
2026-06-21T23:42:57.9175371Z             {
2026-06-21T23:42:57.9175479Z               "path": "docs/DEFERRED.md",
2026-06-21T23:42:57.9175566Z               "line": 13
2026-06-21T23:42:57.9175653Z             }
2026-06-21T23:42:57.9175738Z           ]
2026-06-21T23:42:57.9175822Z         },
2026-06-21T23:42:57.9175912Z         "impl": {
2026-06-21T23:42:57.9176008Z           "complete": true,
2026-06-21T23:42:57.9176097Z           "evidence": [
2026-06-21T23:42:57.9176287Z             {
2026-06-21T23:42:57.9176412Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T23:42:57.9176501Z               "line": 391
2026-06-21T23:42:57.9176588Z             },
2026-06-21T23:42:57.9176674Z             {
2026-06-21T23:42:57.9176792Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-21T23:42:57.9176883Z               "line": 27
2026-06-21T23:42:57.9176970Z             },
2026-06-21T23:42:57.9177046Z             {
2026-06-21T23:42:57.9177159Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-21T23:42:57.9177251Z               "line": 73
2026-06-21T23:42:57.9177326Z             },
2026-06-21T23:42:57.9177493Z             {
2026-06-21T23:42:57.9177614Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-21T23:42:57.9177693Z               "line": 182
2026-06-21T23:42:57.9177784Z             },
2026-06-21T23:42:57.9177866Z             {
2026-06-21T23:42:57.9177984Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T23:42:57.9178061Z               "line": 426
2026-06-21T23:42:57.9178152Z             },
2026-06-21T23:42:57.9178234Z             {
2026-06-21T23:42:57.9178341Z               "path": "crates/spt-net/src/net/rest.rs",
2026-06-21T23:42:57.9178422Z               "line": 31
2026-06-21T23:42:57.9178508Z             },
2026-06-21T23:42:57.9178589Z             {
2026-06-21T23:42:57.9178696Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T23:42:57.9178781Z               "line": 202
2026-06-21T23:42:57.9178868Z             },
2026-06-21T23:42:57.9179021Z             {
2026-06-21T23:42:57.9179126Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T23:42:57.9179217Z               "line": 83
2026-06-21T23:42:57.9179298Z             },
2026-06-21T23:42:57.9179383Z             {
2026-06-21T23:42:57.9179489Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9179574Z               "line": 1849
2026-06-21T23:42:57.9179659Z             },
2026-06-21T23:42:57.9179750Z             {
2026-06-21T23:42:57.9179851Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T23:42:57.9179936Z               "line": 179
2026-06-21T23:42:57.9180060Z             },
2026-06-21T23:42:57.9180184Z             {
2026-06-21T23:42:57.9180332Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T23:42:57.9180467Z               "line": 215
2026-06-21T23:42:57.9180541Z             }
2026-06-21T23:42:57.9180628Z           ]
2026-06-21T23:42:57.9180719Z         },
2026-06-21T23:42:57.9180852Z         "int": {
2026-06-21T23:42:57.9181082Z           "complete": true,
2026-06-21T23:42:57.9181284Z           "evidence": [
2026-06-21T23:42:57.9181471Z             {
2026-06-21T23:42:57.9181680Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T23:42:57.9181942Z               "line": 721
2026-06-21T23:42:57.9182139Z             },
2026-06-21T23:42:57.9182310Z             {
2026-06-21T23:42:57.9182510Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T23:42:57.9182763Z               "line": 1114
2026-06-21T23:42:57.9182954Z             },
2026-06-21T23:42:57.9183111Z             {
2026-06-21T23:42:57.9183292Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T23:42:57.9183539Z               "line": 726
2026-06-21T23:42:57.9183738Z             }
2026-06-21T23:42:57.9183903Z           ]
2026-06-21T23:42:57.9184067Z         },
2026-06-21T23:42:57.9184228Z         "unit": {
2026-06-21T23:42:57.9184410Z           "complete": true,
2026-06-21T23:42:57.9184605Z           "evidence": [
2026-06-21T23:42:57.9184786Z             {
2026-06-21T23:42:57.9184987Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T23:42:57.9185244Z               "line": 661
2026-06-21T23:42:57.9185425Z             },
2026-06-21T23:42:57.9185593Z             {
2026-06-21T23:42:57.9185791Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T23:42:57.9186044Z               "line": 899
2026-06-21T23:42:57.9186227Z             },
2026-06-21T23:42:57.9186525Z             {
2026-06-21T23:42:57.9186723Z               "path": "crates/spt-net/src/net/rest.rs",
2026-06-21T23:42:57.9186977Z               "line": 66
2026-06-21T23:42:57.9187162Z             },
2026-06-21T23:42:57.9187329Z             {
2026-06-21T23:42:57.9187530Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T23:42:57.9187782Z               "line": 297
2026-06-21T23:42:57.9187963Z             },
2026-06-21T23:42:57.9188136Z             {
2026-06-21T23:42:57.9188330Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T23:42:57.9188568Z               "line": 203
2026-06-21T23:42:57.9188751Z             }
2026-06-21T23:42:57.9189101Z           ]
2026-06-21T23:42:57.9189261Z         }
2026-06-21T23:42:57.9189424Z       }
2026-06-21T23:42:57.9189581Z     },
2026-06-21T23:42:57.9189739Z     {
2026-06-21T23:42:57.9189928Z       "id": "REQ-INST-7",
2026-06-21T23:42:57.9190191Z       "title": "Subnet registry + bare-id resolution policy",
2026-06-21T23:42:57.9190572Z       "requiredStages": [
2026-06-21T23:42:57.9190773Z         "impl",
2026-06-21T23:42:57.9190979Z         "unit",
2026-06-21T23:42:57.9191159Z         "int"
2026-06-21T23:42:57.9191317Z       ],
2026-06-21T23:42:57.9191478Z       "stages": {
2026-06-21T23:42:57.9191647Z         "doc": {
2026-06-21T23:42:57.9191831Z           "complete": false,
2026-06-21T23:42:57.9192031Z           "evidence": []
2026-06-21T23:42:57.9192206Z         },
2026-06-21T23:42:57.9192374Z         "impl": {
2026-06-21T23:42:57.9192545Z           "complete": true,
2026-06-21T23:42:57.9192746Z           "evidence": [
2026-06-21T23:42:57.9192923Z             {
2026-06-21T23:42:57.9193146Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T23:42:57.9193389Z               "line": 436
2026-06-21T23:42:57.9193567Z             },
2026-06-21T23:42:57.9193728Z             {
2026-06-21T23:42:57.9193939Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:42:57.9194209Z               "line": 27
2026-06-21T23:42:57.9194388Z             },
2026-06-21T23:42:57.9194559Z             {
2026-06-21T23:42:57.9194768Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:42:57.9195026Z               "line": 207
2026-06-21T23:42:57.9195199Z             },
2026-06-21T23:42:57.9195365Z             {
2026-06-21T23:42:57.9195566Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:42:57.9195823Z               "line": 344
2026-06-21T23:42:57.9196004Z             },
2026-06-21T23:42:57.9196177Z             {
2026-06-21T23:42:57.9196376Z               "path": "crates/spt-net/src/net/ndjson.rs",
2026-06-21T23:42:57.9196634Z               "line": 59
2026-06-21T23:42:57.9196825Z             },
2026-06-21T23:42:57.9196990Z             {
2026-06-21T23:42:57.9197189Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:42:57.9197446Z               "line": 41
2026-06-21T23:42:57.9197631Z             },
2026-06-21T23:42:57.9197785Z             {
2026-06-21T23:42:57.9197989Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T23:42:57.9198232Z               "line": 27
2026-06-21T23:42:57.9198414Z             },
2026-06-21T23:42:57.9198580Z             {
2026-06-21T23:42:57.9198781Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T23:42:57.9199100Z               "line": 119
2026-06-21T23:42:57.9199292Z             },
2026-06-21T23:42:57.9199457Z             {
2026-06-21T23:42:57.9199652Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T23:42:57.9199897Z               "line": 134
2026-06-21T23:42:57.9200085Z             },
2026-06-21T23:42:57.9200255Z             {
2026-06-21T23:42:57.9200451Z               "path": "crates/spt-store/src/registry.rs",
2026-06-21T23:42:57.9200704Z               "line": 139
2026-06-21T23:42:57.9200890Z             }
2026-06-21T23:42:57.9201056Z           ]
2026-06-21T23:42:57.9201209Z         },
2026-06-21T23:42:57.9201381Z         "int": {
2026-06-21T23:42:57.9201662Z           "complete": true,
2026-06-21T23:42:57.9201859Z           "evidence": [
2026-06-21T23:42:57.9202043Z             {
2026-06-21T23:42:57.9202226Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-21T23:42:57.9202471Z               "line": 145
2026-06-21T23:42:57.9202648Z             },
2026-06-21T23:42:57.9202820Z             {
2026-06-21T23:42:57.9203010Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T23:42:57.9203268Z               "line": 665
2026-06-21T23:42:57.9203454Z             },
2026-06-21T23:42:57.9203626Z             {
2026-06-21T23:42:57.9203822Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T23:42:57.9204193Z               "line": 964
2026-06-21T23:42:57.9204384Z             }
2026-06-21T23:42:57.9204550Z           ]
2026-06-21T23:42:57.9204716Z         },
2026-06-21T23:42:57.9204872Z         "unit": {
2026-06-21T23:42:57.9205052Z           "complete": true,
2026-06-21T23:42:57.9205253Z           "evidence": [
2026-06-21T23:42:57.9205434Z             {
2026-06-21T23:42:57.9205648Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:42:57.9205906Z               "line": 1134
2026-06-21T23:42:57.9206273Z             },
2026-06-21T23:42:57.9206555Z             {
2026-06-21T23:42:57.9206803Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:42:57.9207084Z               "line": 1521
2026-06-21T23:42:57.9207280Z             },
2026-06-21T23:42:57.9207451Z             {
2026-06-21T23:42:57.9207669Z               "path": "crates/spt-daemon/tests/replicate.rs",
2026-06-21T23:42:57.9207924Z               "line": 84
2026-06-21T23:42:57.9208144Z             },
2026-06-21T23:42:57.9208302Z             {
2026-06-21T23:42:57.9208515Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:42:57.9208783Z               "line": 812
2026-06-21T23:42:57.9209079Z             },
2026-06-21T23:42:57.9209242Z             {
2026-06-21T23:42:57.9209441Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:42:57.9209703Z               "line": 823
2026-06-21T23:42:57.9209890Z             },
2026-06-21T23:42:57.9210059Z             {
2026-06-21T23:42:57.9210255Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:42:57.9210501Z               "line": 838
2026-06-21T23:42:57.9210687Z             },
2026-06-21T23:42:57.9210844Z             {
2026-06-21T23:42:57.9211048Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T23:42:57.9211293Z               "line": 166
2026-06-21T23:42:57.9211479Z             },
2026-06-21T23:42:57.9211650Z             {
2026-06-21T23:42:57.9211842Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T23:42:57.9212094Z               "line": 181
2026-06-21T23:42:57.9212279Z             },
2026-06-21T23:42:57.9212447Z             {
2026-06-21T23:42:57.9212637Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T23:42:57.9212885Z               "line": 214
2026-06-21T23:42:57.9213075Z             }
2026-06-21T23:42:57.9213237Z           ]
2026-06-21T23:42:57.9213394Z         }
2026-06-21T23:42:57.9213542Z       }
2026-06-21T23:42:57.9213709Z     },
2026-06-21T23:42:57.9213867Z     {
2026-06-21T23:42:57.9217768Z       "id": "REQ-INST-8",
2026-06-21T23:42:57.9218086Z       "title": "Remote-control mode distinct from local operation",
2026-06-21T23:42:57.9218390Z       "requiredStages": [
2026-06-21T23:42:57.9218581Z         "impl",
2026-06-21T23:42:57.9218751Z         "unit",
2026-06-21T23:42:57.9218910Z         "int"
2026-06-21T23:42:57.9219168Z       ],
2026-06-21T23:42:57.9219324Z       "stages": {
2026-06-21T23:42:57.9219506Z         "doc": {
2026-06-21T23:42:57.9219682Z           "complete": false,
2026-06-21T23:42:57.9219878Z           "evidence": []
2026-06-21T23:42:57.9220063Z         },
2026-06-21T23:42:57.9220225Z         "impl": {
2026-06-21T23:42:57.9220402Z           "complete": true,
2026-06-21T23:42:57.9220592Z           "evidence": [
2026-06-21T23:42:57.9221037Z             {
2026-06-21T23:42:57.9221238Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T23:42:57.9221491Z               "line": 202
2026-06-21T23:42:57.9221676Z             },
2026-06-21T23:42:57.9221843Z             {
2026-06-21T23:42:57.9222039Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T23:42:57.9222291Z               "line": 525
2026-06-21T23:42:57.9222463Z             },
2026-06-21T23:42:57.9222630Z             {
2026-06-21T23:42:57.9222815Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T23:42:57.9223055Z               "line": 565
2026-06-21T23:42:57.9223235Z             },
2026-06-21T23:42:57.9223506Z             {
2026-06-21T23:42:57.9223698Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T23:42:57.9223945Z               "line": 62
2026-06-21T23:42:57.9224121Z             }
2026-06-21T23:42:57.9224279Z           ]
2026-06-21T23:42:57.9224436Z         },
2026-06-21T23:42:57.9224608Z         "int": {
2026-06-21T23:42:57.9224798Z           "complete": true,
2026-06-21T23:42:57.9224994Z           "evidence": [
2026-06-21T23:42:57.9225184Z             {
2026-06-21T23:42:57.9225394Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T23:42:57.9225661Z               "line": 415
2026-06-21T23:42:57.9225831Z             },
2026-06-21T23:42:57.9225988Z             {
2026-06-21T23:42:57.9226192Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T23:42:57.9226449Z               "line": 1028
2026-06-21T23:42:57.9226631Z             }
2026-06-21T23:42:57.9226787Z           ]
2026-06-21T23:42:57.9226946Z         },
2026-06-21T23:42:57.9227102Z         "unit": {
2026-06-21T23:42:57.9227289Z           "complete": true,
2026-06-21T23:42:57.9227480Z           "evidence": [
2026-06-21T23:42:57.9227665Z             {
2026-06-21T23:42:57.9227862Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T23:42:57.9228105Z               "line": 369
2026-06-21T23:42:57.9228280Z             },
2026-06-21T23:42:57.9228449Z             {
2026-06-21T23:42:57.9228637Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T23:42:57.9228874Z               "line": 636
2026-06-21T23:42:57.9229141Z             },
2026-06-21T23:42:57.9229311Z             {
2026-06-21T23:42:57.9229527Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T23:42:57.9229770Z               "line": 116
2026-06-21T23:42:57.9229941Z             },
2026-06-21T23:42:57.9230104Z             {
2026-06-21T23:42:57.9230289Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T23:42:57.9230523Z               "line": 160
2026-06-21T23:42:57.9230705Z             }
2026-06-21T23:42:57.9230866Z           ]
2026-06-21T23:42:57.9231025Z         }
2026-06-21T23:42:57.9231185Z       }
2026-06-21T23:42:57.9231342Z     },
2026-06-21T23:42:57.9231497Z     {
2026-06-21T23:42:57.9231674Z       "id": "REQ-INST-9",
2026-06-21T23:42:57.9231960Z       "title": "Multi-subnet membership (same-user N subnets; cross-user seam)",
2026-06-21T23:42:57.9232275Z       "requiredStages": [
2026-06-21T23:42:57.9232465Z         "impl",
2026-06-21T23:42:57.9232637Z         "unit"
2026-06-21T23:42:57.9232813Z       ],
2026-06-21T23:42:57.9232971Z       "stages": {
2026-06-21T23:42:57.9233142Z         "doc": {
2026-06-21T23:42:57.9233319Z           "complete": false,
2026-06-21T23:42:57.9233519Z           "evidence": []
2026-06-21T23:42:57.9233700Z         },
2026-06-21T23:42:57.9233863Z         "impl": {
2026-06-21T23:42:57.9234038Z           "complete": true,
2026-06-21T23:42:57.9234238Z           "evidence": [
2026-06-21T23:42:57.9234414Z             {
2026-06-21T23:42:57.9234619Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:42:57.9234873Z               "line": 449
2026-06-21T23:42:57.9235052Z             }
2026-06-21T23:42:57.9235211Z           ]
2026-06-21T23:42:57.9235363Z         },
2026-06-21T23:42:57.9235512Z         "int": {
2026-06-21T23:42:57.9235687Z           "complete": false,
2026-06-21T23:42:57.9235993Z           "evidence": []
2026-06-21T23:42:57.9236184Z         },
2026-06-21T23:42:57.9236345Z         "unit": {
2026-06-21T23:42:57.9236521Z           "complete": true,
2026-06-21T23:42:57.9236713Z           "evidence": [
2026-06-21T23:42:57.9236896Z             {
2026-06-21T23:42:57.9237091Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:42:57.9237343Z               "line": 1397
2026-06-21T23:42:57.9237530Z             },
2026-06-21T23:42:57.9237697Z             {
2026-06-21T23:42:57.9237887Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:42:57.9238130Z               "line": 1406
2026-06-21T23:42:57.9238422Z             },
2026-06-21T23:42:57.9238583Z             {
2026-06-21T23:42:57.9238769Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:42:57.9239098Z               "line": 1422
2026-06-21T23:42:57.9239278Z             },
2026-06-21T23:42:57.9239434Z             {
2026-06-21T23:42:57.9239638Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:42:57.9239876Z               "line": 1434
2026-06-21T23:42:57.9240053Z             },
2026-06-21T23:42:57.9240215Z             {
2026-06-21T23:42:57.9240411Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:42:57.9240664Z               "line": 1454
2026-06-21T23:42:57.9240849Z             }
2026-06-21T23:42:57.9241012Z           ]
2026-06-21T23:42:57.9241169Z         }
2026-06-21T23:42:57.9241331Z       }
2026-06-21T23:42:57.9241484Z     },
2026-06-21T23:42:57.9241642Z     {
2026-06-21T23:42:57.9241806Z       "id": "REQ-INSTALL-1",
2026-06-21T23:42:57.9242109Z       "title": "Two install paths; signed one-line script; OS-service registration",
2026-06-21T23:42:57.9242433Z       "requiredStages": [
2026-06-21T23:42:57.9242630Z         "doc",
2026-06-21T23:42:57.9242801Z         "impl",
2026-06-21T23:42:57.9242968Z         "int"
2026-06-21T23:42:57.9243130Z       ],
2026-06-21T23:42:57.9243288Z       "stages": {
2026-06-21T23:42:57.9243469Z         "doc": {
2026-06-21T23:42:57.9243645Z           "complete": true,
2026-06-21T23:42:57.9243832Z           "evidence": [
2026-06-21T23:42:57.9244012Z             {
2026-06-21T23:42:57.9244185Z               "path": "CONTEXT.md",
2026-06-21T23:42:57.9244399Z               "line": 754
2026-06-21T23:42:57.9244579Z             }
2026-06-21T23:42:57.9244740Z           ]
2026-06-21T23:42:57.9244908Z         },
2026-06-21T23:42:57.9245070Z         "impl": {
2026-06-21T23:42:57.9245246Z           "complete": true,
2026-06-21T23:42:57.9245442Z           "evidence": [
2026-06-21T23:42:57.9245618Z             {
2026-06-21T23:42:57.9245809Z               "path": "installer/install.ps1",
2026-06-21T23:42:57.9246058Z               "line": 57
2026-06-21T23:42:57.9246243Z             },
2026-06-21T23:42:57.9246411Z             {
2026-06-21T23:42:57.9246595Z               "path": "installer/install.sh",
2026-06-21T23:42:57.9246824Z               "line": 52
2026-06-21T23:42:57.9247005Z             }
2026-06-21T23:42:57.9247169Z           ]
2026-06-21T23:42:57.9247327Z         },
2026-06-21T23:42:57.9247489Z         "int": {
2026-06-21T23:42:57.9247665Z           "complete": true,
2026-06-21T23:42:57.9247865Z           "evidence": [
2026-06-21T23:42:57.9248038Z             {
2026-06-21T23:42:57.9248232Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-21T23:42:57.9248475Z               "line": 21
2026-06-21T23:42:57.9248658Z             }
2026-06-21T23:42:57.9248819Z           ]
2026-06-21T23:42:57.9249047Z         },
2026-06-21T23:42:57.9249216Z         "unit": {
2026-06-21T23:42:57.9249390Z           "complete": false,
2026-06-21T23:42:57.9249607Z           "evidence": []
2026-06-21T23:42:57.9249795Z         }
2026-06-21T23:42:57.9249957Z       }
2026-06-21T23:42:57.9250117Z     },
2026-06-21T23:42:57.9250270Z     {
2026-06-21T23:42:57.9250437Z       "id": "REQ-INSTALL-10",
2026-06-21T23:42:57.9251962Z       "title": "Windows at-logon autostart runs the daemon in the background with no persistent window: the scheduled task launches `spt daemon start` (which spawn_detaches a console-less DETACHED_PROCESS daemon and exits) rather than the foreground `spt daemon run` — Task Scheduler's interactive ONLOGON launch of a long-lived console process otherwise leaves a visible console window for the daemon's whole lifetime (v0.7.4)",
2026-06-21T23:42:57.9253294Z       "requiredStages": [
2026-06-21T23:42:57.9253490Z         "impl",
2026-06-21T23:42:57.9253661Z         "unit"
2026-06-21T23:42:57.9253814Z       ],
2026-06-21T23:42:57.9253962Z       "stages": {
2026-06-21T23:42:57.9254134Z         "doc": {
2026-06-21T23:42:57.9254320Z           "complete": false,
2026-06-21T23:42:57.9254635Z           "evidence": []
2026-06-21T23:42:57.9254815Z         },
2026-06-21T23:42:57.9254983Z         "impl": {
2026-06-21T23:42:57.9255158Z           "complete": true,
2026-06-21T23:42:57.9255358Z           "evidence": [
2026-06-21T23:42:57.9255530Z             {
2026-06-21T23:42:57.9255721Z               "path": "installer/install.ps1",
2026-06-21T23:42:57.9255974Z               "line": 191
2026-06-21T23:42:57.9256173Z             }
2026-06-21T23:42:57.9256336Z           ]
2026-06-21T23:42:57.9256498Z         },
2026-06-21T23:42:57.9256656Z         "int": {
2026-06-21T23:42:57.9256840Z           "complete": false,
2026-06-21T23:42:57.9257037Z           "evidence": []
2026-06-21T23:42:57.9257218Z         },
2026-06-21T23:42:57.9257380Z         "unit": {
2026-06-21T23:42:57.9257555Z           "complete": true,
2026-06-21T23:42:57.9257762Z           "evidence": [
2026-06-21T23:42:57.9257940Z             {
2026-06-21T23:42:57.9258139Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-21T23:42:57.9258401Z               "line": 211
2026-06-21T23:42:57.9258579Z             }
2026-06-21T23:42:57.9258739Z           ]
2026-06-21T23:42:57.9258903Z         }
2026-06-21T23:42:57.9259161Z       }
2026-06-21T23:42:57.9259332Z     },
2026-06-21T23:42:57.9259490Z     {
2026-06-21T23:42:57.9259666Z       "id": "REQ-INSTALL-11",
2026-06-21T23:42:57.9261551Z       "title": "Adapter command templates resolve their program against the adapter's install dir BEFORE PATH: a `.spt`-shipped binary (dropped to adapters/_github/<safe>/ by --release/--github acquisition, or kept in the source_dir under copy-mode where only manifest+strings/ are copied to adapters/<name>) runs without any PATH placement — a bare-name template token (e.g. `claude-spt-digest ...`) is rewritten to <install_dir>/<program>(.exe on Windows) when that file exists, else left bare for the PATH fallback. Makes a `.spt` self-contained (closes the --release bundled-binary gap perri confirmed) (v0.7.4)",
2026-06-21T23:42:57.9263182Z       "requiredStages": [
2026-06-21T23:42:57.9263378Z         "doc",
2026-06-21T23:42:57.9263549Z         "impl",
2026-06-21T23:42:57.9263722Z         "unit"
2026-06-21T23:42:57.9263892Z       ],
2026-06-21T23:42:57.9264041Z       "stages": {
2026-06-21T23:42:57.9264207Z         "doc": {
2026-06-21T23:42:57.9264379Z           "complete": true,
2026-06-21T23:42:57.9264585Z           "evidence": [
2026-06-21T23:42:57.9264765Z             {
2026-06-21T23:42:57.9264943Z               "path": "CONTEXT.md",
2026-06-21T23:42:57.9265157Z               "line": 138
2026-06-21T23:42:57.9265328Z             },
2026-06-21T23:42:57.9265495Z             {
2026-06-21T23:42:57.9265676Z               "path": "docs/MANIFEST.md",
2026-06-21T23:42:57.9265895Z               "line": 82
2026-06-21T23:42:57.9266075Z             }
2026-06-21T23:42:57.9266238Z           ]
2026-06-21T23:42:57.9266400Z         },
2026-06-21T23:42:57.9266572Z         "impl": {
2026-06-21T23:42:57.9266854Z           "complete": true,
2026-06-21T23:42:57.9267058Z           "evidence": [
2026-06-21T23:42:57.9267230Z             {
2026-06-21T23:42:57.9267430Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T23:42:57.9267673Z               "line": 223
2026-06-21T23:42:57.9267860Z             },
2026-06-21T23:42:57.9268020Z             {
2026-06-21T23:42:57.9268356Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T23:42:57.9268609Z               "line": 99
2026-06-21T23:42:57.9268786Z             },
2026-06-21T23:42:57.9269028Z             {
2026-06-21T23:42:57.9269224Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T23:42:57.9269472Z               "line": 117
2026-06-21T23:42:57.9269648Z             },
2026-06-21T23:42:57.9269815Z             {
2026-06-21T23:42:57.9270002Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-21T23:42:57.9270249Z               "line": 332
2026-06-21T23:42:57.9270427Z             },
2026-06-21T23:42:57.9270607Z             {
2026-06-21T23:42:57.9270915Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T23:42:57.9271157Z               "line": 88
2026-06-21T23:42:57.9271347Z             },
2026-06-21T23:42:57.9271505Z             {
2026-06-21T23:42:57.9271701Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T23:42:57.9271949Z               "line": 104
2026-06-21T23:42:57.9272130Z             },
2026-06-21T23:42:57.9272302Z             {
2026-06-21T23:42:57.9272491Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T23:42:57.9272739Z               "line": 297
2026-06-21T23:42:57.9272927Z             },
2026-06-21T23:42:57.9273082Z             {
2026-06-21T23:42:57.9273270Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T23:42:57.9273520Z               "line": 332
2026-06-21T23:42:57.9273700Z             },
2026-06-21T23:42:57.9273871Z             {
2026-06-21T23:42:57.9274071Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T23:42:57.9274315Z               "line": 523
2026-06-21T23:42:57.9274506Z             },
2026-06-21T23:42:57.9274677Z             {
2026-06-21T23:42:57.9274873Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T23:42:57.9275120Z               "line": 546
2026-06-21T23:42:57.9275297Z             },
2026-06-21T23:42:57.9275465Z             {
2026-06-21T23:42:57.9275664Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T23:42:57.9275902Z               "line": 561
2026-06-21T23:42:57.9276085Z             },
2026-06-21T23:42:57.9276250Z             {
2026-06-21T23:42:57.9276440Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T23:42:57.9276678Z               "line": 492
2026-06-21T23:42:57.9276870Z             }
2026-06-21T23:42:57.9277041Z           ]
2026-06-21T23:42:57.9277204Z         },
2026-06-21T23:42:57.9277370Z         "int": {
2026-06-21T23:42:57.9277556Z           "complete": false,
2026-06-21T23:42:57.9277753Z           "evidence": []
2026-06-21T23:42:57.9277942Z         },
2026-06-21T23:42:57.9278110Z         "unit": {
2026-06-21T23:42:57.9278290Z           "complete": true,
2026-06-21T23:42:57.9278476Z           "evidence": [
2026-06-21T23:42:57.9278656Z             {
2026-06-21T23:42:57.9278845Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T23:42:57.9279150Z               "line": 799
2026-06-21T23:42:57.9279341Z             },
2026-06-21T23:42:57.9279517Z             {
2026-06-21T23:42:57.9279709Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T23:42:57.9279957Z               "line": 811
2026-06-21T23:42:57.9280147Z             },
2026-06-21T23:42:57.9280310Z             {
2026-06-21T23:42:57.9280500Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T23:42:57.9280742Z               "line": 820
2026-06-21T23:42:57.9280920Z             }
2026-06-21T23:42:57.9281076Z           ]
2026-06-21T23:42:57.9281235Z         }
2026-06-21T23:42:57.9281396Z       }
2026-06-21T23:42:57.9281552Z     },
2026-06-21T23:42:57.9281717Z     {
2026-06-21T23:42:57.9281894Z       "id": "REQ-INSTALL-12",
2026-06-21T23:42:57.9284603Z       "title": "Durable active-profile pointer for bind-time profile selection (ADR-0021): adapters/active-profiles.toml at the registry ROOT (sibling to the per-adapter <name>/ dirs, so adapter add/update/remove — which only rewrite a <name>/ subdir — can never clobber it), a flat host_binary → \"adapter[:profile]\" map. Read at bind as the PRIMARY profile selector; unset → the registered_at_ms fallback (REQ-START-5). Written ONLY by `spt adapter use <adapter>[:profile]` (resolves the adapter's host_binaries → sets each binary→adapter[:profile]); `spt adapter use --clear <adapter|binary>` drops. NEVER auto-written by install/update/adapter add (that is precisely what would let an update silently flip the active profile). A stale pointer (uninstalled adapter / deleted profile) self-heals: ignored, fall back, warn once. Pruned on adapter remove. Atomic write (spt_store atomic). (v0.9.0)",
2026-06-21T23:42:57.9287039Z       "requiredStages": [
2026-06-21T23:42:57.9287334Z         "doc",
2026-06-21T23:42:57.9287496Z         "impl",
2026-06-21T23:42:57.9287674Z         "unit",
2026-06-21T23:42:57.9287839Z         "int"
2026-06-21T23:42:57.9288003Z       ],
2026-06-21T23:42:57.9288158Z       "stages": {
2026-06-21T23:42:57.9288327Z         "doc": {
2026-06-21T23:42:57.9288507Z           "complete": true,
2026-06-21T23:42:57.9288703Z           "evidence": [
2026-06-21T23:42:57.9288879Z             {
2026-06-21T23:42:57.9289135Z               "path": "CONTEXT.md",
2026-06-21T23:42:57.9289344Z               "line": 185
2026-06-21T23:42:57.9289534Z             }
2026-06-21T23:42:57.9289692Z           ]
2026-06-21T23:42:57.9289858Z         },
2026-06-21T23:42:57.9290016Z         "impl": {
2026-06-21T23:42:57.9290197Z           "complete": true,
2026-06-21T23:42:57.9290392Z           "evidence": [
2026-06-21T23:42:57.9290564Z             {
2026-06-21T23:42:57.9290764Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T23:42:57.9291031Z               "line": 27
2026-06-21T23:42:57.9291208Z             },
2026-06-21T23:42:57.9294612Z             {
2026-06-21T23:42:57.9294853Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T23:42:57.9295121Z               "line": 223
2026-06-21T23:42:57.9295321Z             },
2026-06-21T23:42:57.9295502Z             {
2026-06-21T23:42:57.9295688Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9295916Z               "line": 5677
2026-06-21T23:42:57.9296117Z             }
2026-06-21T23:42:57.9296280Z           ]
2026-06-21T23:42:57.9296441Z         },
2026-06-21T23:42:57.9296600Z         "int": {
2026-06-21T23:42:57.9296780Z           "complete": true,
2026-06-21T23:42:57.9296861Z           "evidence": [
2026-06-21T23:42:57.9296952Z             {
2026-06-21T23:42:57.9297079Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-06-21T23:42:57.9297176Z               "line": 19
2026-06-21T23:42:57.9297257Z             }
2026-06-21T23:42:57.9297357Z           ]
2026-06-21T23:42:57.9297441Z         },
2026-06-21T23:42:57.9297527Z         "unit": {
2026-06-21T23:42:57.9297619Z           "complete": true,
2026-06-21T23:42:57.9297704Z           "evidence": [
2026-06-21T23:42:57.9297789Z             {
2026-06-21T23:42:57.9297909Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T23:42:57.9298010Z               "line": 395
2026-06-21T23:42:57.9298084Z             },
2026-06-21T23:42:57.9298171Z             {
2026-06-21T23:42:57.9298295Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T23:42:57.9298390Z               "line": 421
2026-06-21T23:42:57.9298476Z             },
2026-06-21T23:42:57.9298558Z             {
2026-06-21T23:42:57.9298686Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T23:42:57.9298781Z               "line": 440
2026-06-21T23:42:57.9298858Z             },
2026-06-21T23:42:57.9299029Z             {
2026-06-21T23:42:57.9299154Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T23:42:57.9299254Z               "line": 475
2026-06-21T23:42:57.9299334Z             },
2026-06-21T23:42:57.9299420Z             {
2026-06-21T23:42:57.9299531Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9299606Z               "line": 8665
2026-06-21T23:42:57.9299691Z             }
2026-06-21T23:42:57.9299904Z           ]
2026-06-21T23:42:57.9299994Z         }
2026-06-21T23:42:57.9300079Z       }
2026-06-21T23:42:57.9300161Z     },
2026-06-21T23:42:57.9300233Z     {
2026-06-21T23:42:57.9300332Z       "id": "REQ-INSTALL-2",
2026-06-21T23:42:57.9300476Z       "title": "Marketplace-repackaging-friendly install",
2026-06-21T23:42:57.9300562Z       "requiredStages": [
2026-06-21T23:42:57.9300656Z         "doc"
2026-06-21T23:42:57.9300728Z       ],
2026-06-21T23:42:57.9300815Z       "stages": {
2026-06-21T23:42:57.9300905Z         "doc": {
2026-06-21T23:42:57.9301000Z           "complete": true,
2026-06-21T23:42:57.9301091Z           "evidence": [
2026-06-21T23:42:57.9301276Z             {
2026-06-21T23:42:57.9301382Z               "path": "CONTEXT.md",
2026-06-21T23:42:57.9301472Z               "line": 755
2026-06-21T23:42:57.9301553Z             }
2026-06-21T23:42:57.9301634Z           ]
2026-06-21T23:42:57.9301716Z         },
2026-06-21T23:42:57.9301806Z         "impl": {
2026-06-21T23:42:57.9301906Z           "complete": false,
2026-06-21T23:42:57.9301997Z           "evidence": []
2026-06-21T23:42:57.9302079Z         },
2026-06-21T23:42:57.9302167Z         "int": {
2026-06-21T23:42:57.9302264Z           "complete": false,
2026-06-21T23:42:57.9302350Z           "evidence": []
2026-06-21T23:42:57.9302426Z         },
2026-06-21T23:42:57.9302511Z         "unit": {
2026-06-21T23:42:57.9302600Z           "complete": false,
2026-06-21T23:42:57.9302677Z           "evidence": []
2026-06-21T23:42:57.9302762Z         }
2026-06-21T23:42:57.9302856Z       }
2026-06-21T23:42:57.9302941Z     },
2026-06-21T23:42:57.9303028Z     {
2026-06-21T23:42:57.9303114Z       "id": "REQ-INSTALL-3",
2026-06-21T23:42:57.9303266Z       "title": "Idempotent + interactive-optional first run",
2026-06-21T23:42:57.9303357Z       "requiredStages": [
2026-06-21T23:42:57.9303453Z         "impl",
2026-06-21T23:42:57.9303528Z         "int"
2026-06-21T23:42:57.9303610Z       ],
2026-06-21T23:42:57.9303696Z       "stages": {
2026-06-21T23:42:57.9303786Z         "doc": {
2026-06-21T23:42:57.9303881Z           "complete": false,
2026-06-21T23:42:57.9303973Z           "evidence": []
2026-06-21T23:42:57.9304062Z         },
2026-06-21T23:42:57.9304148Z         "impl": {
2026-06-21T23:42:57.9304239Z           "complete": true,
2026-06-21T23:42:57.9304330Z           "evidence": [
2026-06-21T23:42:57.9304415Z             {
2026-06-21T23:42:57.9304520Z               "path": "installer/install.ps1",
2026-06-21T23:42:57.9304603Z               "line": 100
2026-06-21T23:42:57.9304688Z             },
2026-06-21T23:42:57.9304772Z             {
2026-06-21T23:42:57.9304874Z               "path": "installer/install.ps1",
2026-06-21T23:42:57.9304974Z               "line": 111
2026-06-21T23:42:57.9305054Z             },
2026-06-21T23:42:57.9305129Z             {
2026-06-21T23:42:57.9305220Z               "path": "installer/install.sh",
2026-06-21T23:42:57.9305315Z               "line": 79
2026-06-21T23:42:57.9305404Z             }
2026-06-21T23:42:57.9305484Z           ]
2026-06-21T23:42:57.9305571Z         },
2026-06-21T23:42:57.9305657Z         "int": {
2026-06-21T23:42:57.9305743Z           "complete": true,
2026-06-21T23:42:57.9305833Z           "evidence": [
2026-06-21T23:42:57.9305919Z             {
2026-06-21T23:42:57.9306081Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-21T23:42:57.9306176Z               "line": 167
2026-06-21T23:42:57.9306262Z             }
2026-06-21T23:42:57.9306343Z           ]
2026-06-21T23:42:57.9306433Z         },
2026-06-21T23:42:57.9306516Z         "unit": {
2026-06-21T23:42:57.9306611Z           "complete": false,
2026-06-21T23:42:57.9306706Z           "evidence": []
2026-06-21T23:42:57.9306796Z         }
2026-06-21T23:42:57.9306883Z       }
2026-06-21T23:42:57.9306968Z     },
2026-06-21T23:42:57.9307054Z     {
2026-06-21T23:42:57.9307145Z       "id": "REQ-INSTALL-4",
2026-06-21T23:42:57.9307765Z       "title": "Adapter registration lifecycle: spt adapter add (--github, manifest-first, install-is-first-update) + soft-deregister remove + optional manifest uninstall template; node-local registered-adapter set self-update ripples over",
2026-06-21T23:42:57.9307949Z       "requiredStages": [
2026-06-21T23:42:57.9308039Z         "impl",
2026-06-21T23:42:57.9308121Z         "unit"
2026-06-21T23:42:57.9308202Z       ],
2026-06-21T23:42:57.9308293Z       "stages": {
2026-06-21T23:42:57.9308378Z         "doc": {
2026-06-21T23:42:57.9308469Z           "complete": false,
2026-06-21T23:42:57.9308560Z           "evidence": []
2026-06-21T23:42:57.9308645Z         },
2026-06-21T23:42:57.9308736Z         "impl": {
2026-06-21T23:42:57.9308823Z           "complete": true,
2026-06-21T23:42:57.9308922Z           "evidence": [
2026-06-21T23:42:57.9309212Z             {
2026-06-21T23:42:57.9309351Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T23:42:57.9309447Z               "line": 165
2026-06-21T23:42:57.9309527Z             },
2026-06-21T23:42:57.9309622Z             {
2026-06-21T23:42:57.9309738Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T23:42:57.9309837Z               "line": 29
2026-06-21T23:42:57.9309918Z             },
2026-06-21T23:42:57.9310004Z             {
2026-06-21T23:42:57.9310129Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T23:42:57.9310213Z               "line": 288
2026-06-21T23:42:57.9310298Z             },
2026-06-21T23:42:57.9310380Z             {
2026-06-21T23:42:57.9310502Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T23:42:57.9310592Z               "line": 356
2026-06-21T23:42:57.9310669Z             },
2026-06-21T23:42:57.9310759Z             {
2026-06-21T23:42:57.9310878Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T23:42:57.9310973Z               "line": 386
2026-06-21T23:42:57.9311060Z             },
2026-06-21T23:42:57.9311141Z             {
2026-06-21T23:42:57.9311259Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T23:42:57.9311342Z               "line": 434
2026-06-21T23:42:57.9311436Z             },
2026-06-21T23:42:57.9311521Z             {
2026-06-21T23:42:57.9311623Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9311713Z               "line": 5396
2026-06-21T23:42:57.9311799Z             }
2026-06-21T23:42:57.9311884Z           ]
2026-06-21T23:42:57.9311966Z         },
2026-06-21T23:42:57.9312047Z         "int": {
2026-06-21T23:42:57.9312132Z           "complete": false,
2026-06-21T23:42:57.9312218Z           "evidence": []
2026-06-21T23:42:57.9312300Z         },
2026-06-21T23:42:57.9312389Z         "unit": {
2026-06-21T23:42:57.9312480Z           "complete": true,
2026-06-21T23:42:57.9312567Z           "evidence": [
2026-06-21T23:42:57.9312658Z             {
2026-06-21T23:42:57.9312790Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T23:42:57.9312877Z               "line": 375
2026-06-21T23:42:57.9312963Z             },
2026-06-21T23:42:57.9313047Z             {
2026-06-21T23:42:57.9313165Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T23:42:57.9313242Z               "line": 808
2026-06-21T23:42:57.9313327Z             },
2026-06-21T23:42:57.9313411Z             {
2026-06-21T23:42:57.9313526Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T23:42:57.9313608Z               "line": 849
2026-06-21T23:42:57.9313693Z             },
2026-06-21T23:42:57.9313778Z             {
2026-06-21T23:42:57.9313894Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T23:42:57.9313979Z               "line": 869
2026-06-21T23:42:57.9314064Z             },
2026-06-21T23:42:57.9314140Z             {
2026-06-21T23:42:57.9314242Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9314342Z               "line": 8403
2026-06-21T23:42:57.9314432Z             }
2026-06-21T23:42:57.9314513Z           ]
2026-06-21T23:42:57.9314599Z         }
2026-06-21T23:42:57.9314685Z       }
2026-06-21T23:42:57.9314770Z     },
2026-06-21T23:42:57.9314848Z     {
2026-06-21T23:42:57.9315052Z       "id": "REQ-INSTALL-5",
2026-06-21T23:42:57.9315530Z       "title": "Non-interactive install path: the canonical one-liner doubles as every adapter's pack-in on-demand install (no second mechanism); sha256-verified fetch; user-PATH registration",
2026-06-21T23:42:57.9315614Z       "requiredStages": [
2026-06-21T23:42:57.9315708Z         "impl",
2026-06-21T23:42:57.9315794Z         "int"
2026-06-21T23:42:57.9315875Z       ],
2026-06-21T23:42:57.9315969Z       "stages": {
2026-06-21T23:42:57.9316059Z         "doc": {
2026-06-21T23:42:57.9316146Z           "complete": false,
2026-06-21T23:42:57.9316227Z           "evidence": []
2026-06-21T23:42:57.9316383Z         },
2026-06-21T23:42:57.9316470Z         "impl": {
2026-06-21T23:42:57.9316565Z           "complete": true,
2026-06-21T23:42:57.9316655Z           "evidence": [
2026-06-21T23:42:57.9316741Z             {
2026-06-21T23:42:57.9316851Z               "path": "installer/install.ps1",
2026-06-21T23:42:57.9316941Z               "line": 5
2026-06-21T23:42:57.9317032Z             },
2026-06-21T23:42:57.9317109Z             {
2026-06-21T23:42:57.9317218Z               "path": "installer/install.sh",
2026-06-21T23:42:57.9317304Z               "line": 6
2026-06-21T23:42:57.9317385Z             }
2026-06-21T23:42:57.9317476Z           ]
2026-06-21T23:42:57.9317552Z         },
2026-06-21T23:42:57.9317642Z         "int": {
2026-06-21T23:42:57.9317734Z           "complete": true,
2026-06-21T23:42:57.9317828Z           "evidence": [
2026-06-21T23:42:57.9317910Z             {
2026-06-21T23:42:57.9318025Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-21T23:42:57.9318120Z               "line": 22
2026-06-21T23:42:57.9318209Z             }
2026-06-21T23:42:57.9318291Z           ]
2026-06-21T23:42:57.9318378Z         },
2026-06-21T23:42:57.9318458Z         "unit": {
2026-06-21T23:42:57.9318543Z           "complete": false,
2026-06-21T23:42:57.9318628Z           "evidence": []
2026-06-21T23:42:57.9318714Z         }
2026-06-21T23:42:57.9318806Z       }
2026-06-21T23:42:57.9318890Z     },
2026-06-21T23:42:57.9319063Z     {
2026-06-21T23:42:57.9319158Z       "id": "REQ-INSTALL-6",
2026-06-21T23:42:57.9320365Z       "title": "Linux elevation install leg: install.sh symlinks the binary into a sudo-reachable path (/usr/local/bin; graceful print-the-one-liner when unelevated) so sudo spt resolves; first sudo spt detects elevation and prompts ONCE for the default user account — thereafter any elevated daemon launch runs daemon + state under that account, never root (KH 5.7 interplay verified) (M8 decision 8)",
2026-06-21T23:42:57.9320469Z       "requiredStages": [
2026-06-21T23:42:57.9320555Z         "impl",
2026-06-21T23:42:57.9320651Z         "unit"
2026-06-21T23:42:57.9320736Z       ],
2026-06-21T23:42:57.9320821Z       "stages": {
2026-06-21T23:42:57.9320902Z         "doc": {
2026-06-21T23:42:57.9320992Z           "complete": false,
2026-06-21T23:42:57.9321086Z           "evidence": []
2026-06-21T23:42:57.9321176Z         },
2026-06-21T23:42:57.9321267Z         "impl": {
2026-06-21T23:42:57.9321349Z           "complete": true,
2026-06-21T23:42:57.9321442Z           "evidence": [
2026-06-21T23:42:57.9321519Z             {
2026-06-21T23:42:57.9321634Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:42:57.9321725Z               "line": 61
2026-06-21T23:42:57.9321810Z             },
2026-06-21T23:42:57.9321892Z             {
2026-06-21T23:42:57.9322016Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:42:57.9322100Z               "line": 641
2026-06-21T23:42:57.9322178Z             },
2026-06-21T23:42:57.9322259Z             {
2026-06-21T23:42:57.9322378Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T23:42:57.9322477Z               "line": 191
2026-06-21T23:42:57.9322564Z             },
2026-06-21T23:42:57.9322644Z             {
2026-06-21T23:42:57.9322749Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T23:42:57.9322832Z               "line": 276
2026-06-21T23:42:57.9323026Z             },
2026-06-21T23:42:57.9323107Z             {
2026-06-21T23:42:57.9323213Z               "path": "crates/spt/src/main.rs",
2026-06-21T23:42:57.9323297Z               "line": 43
2026-06-21T23:42:57.9323379Z             },
2026-06-21T23:42:57.9323466Z             {
2026-06-21T23:42:57.9323575Z               "path": "installer/install.sh",
2026-06-21T23:42:57.9323669Z               "line": 104
2026-06-21T23:42:57.9323744Z             }
2026-06-21T23:42:57.9323831Z           ]
2026-06-21T23:42:57.9323916Z         },
2026-06-21T23:42:57.9324000Z         "int": {
2026-06-21T23:42:57.9324091Z           "complete": false,
2026-06-21T23:42:57.9324177Z           "evidence": []
2026-06-21T23:42:57.9324367Z         },
2026-06-21T23:42:57.9324449Z         "unit": {
2026-06-21T23:42:57.9324549Z           "complete": true,
2026-06-21T23:42:57.9324634Z           "evidence": [
2026-06-21T23:42:57.9324720Z             {
2026-06-21T23:42:57.9324835Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-21T23:42:57.9324921Z               "line": 894
2026-06-21T23:42:57.9325006Z             }
2026-06-21T23:42:57.9325088Z           ]
2026-06-21T23:42:57.9325173Z         }
2026-06-21T23:42:57.9325259Z       }
2026-06-21T23:42:57.9325344Z     },
2026-06-21T23:42:57.9325427Z     {
2026-06-21T23:42:57.9325521Z       "id": "REQ-INSTALL-7",
2026-06-21T23:42:57.9326614Z       "title": "Windows inbound reachability: the elevated install leg registers the inbound-UDP firewall rule (New-NetFirewallRule); the daemon self-detects blocked inbound and renders it as the no-connection state in subnet status + the coming-online banner (covers user-scope installs that skip the elevated leg — never a silent NO_SEED_HOLDER dead-end) (M8 root cause 3)",
2026-06-21T23:42:57.9326729Z       "requiredStages": [
2026-06-21T23:42:57.9326815Z         "impl"
2026-06-21T23:42:57.9326901Z       ],
2026-06-21T23:42:57.9326986Z       "stages": {
2026-06-21T23:42:57.9327073Z         "doc": {
2026-06-21T23:42:57.9327163Z           "complete": false,
2026-06-21T23:42:57.9327267Z           "evidence": []
2026-06-21T23:42:57.9327355Z         },
2026-06-21T23:42:57.9327450Z         "impl": {
2026-06-21T23:42:57.9327535Z           "complete": true,
2026-06-21T23:42:57.9327636Z           "evidence": [
2026-06-21T23:42:57.9327726Z             {
2026-06-21T23:42:57.9327835Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9327936Z               "line": 3920
2026-06-21T23:42:57.9328022Z             },
2026-06-21T23:42:57.9328103Z             {
2026-06-21T23:42:57.9328207Z               "path": "installer/install.ps1",
2026-06-21T23:42:57.9328304Z               "line": 157
2026-06-21T23:42:57.9328412Z             }
2026-06-21T23:42:57.9328493Z           ]
2026-06-21T23:42:57.9328590Z         },
2026-06-21T23:42:57.9328675Z         "int": {
2026-06-21T23:42:57.9328774Z           "complete": false,
2026-06-21T23:42:57.9328866Z           "evidence": []
2026-06-21T23:42:57.9329023Z         },
2026-06-21T23:42:57.9329117Z         "unit": {
2026-06-21T23:42:57.9329221Z           "complete": false,
2026-06-21T23:42:57.9329328Z           "evidence": []
2026-06-21T23:42:57.9329418Z         }
2026-06-21T23:42:57.9329508Z       }
2026-06-21T23:42:57.9329594Z     },
2026-06-21T23:42:57.9329685Z     {
2026-06-21T23:42:57.9329789Z       "id": "REQ-INSTALL-8",
2026-06-21T23:42:57.9330863Z       "title": "OS-service registration (REQ-INSTALL-1's deferred third leg): Linux systemd USER service + loginctl enable-linger (linger rides the elevated install leg; daemon starts at boot pre-login, user universe per KH 5.7, systemctl --user managed); Windows scheduled task at-logon (interactive session, no stored credentials); a node is reachable after reboot without any manual spt invocation (M8 decision 17)",
2026-06-21T23:42:57.9330972Z       "requiredStages": [
2026-06-21T23:42:57.9331067Z         "impl"
2026-06-21T23:42:57.9331144Z       ],
2026-06-21T23:42:57.9331244Z       "stages": {
2026-06-21T23:42:57.9331329Z         "doc": {
2026-06-21T23:42:57.9331543Z           "complete": false,
2026-06-21T23:42:57.9331641Z           "evidence": []
2026-06-21T23:42:57.9331731Z         },
2026-06-21T23:42:57.9331817Z         "impl": {
2026-06-21T23:42:57.9331904Z           "complete": true,
2026-06-21T23:42:57.9332012Z           "evidence": [
2026-06-21T23:42:57.9332098Z             {
2026-06-21T23:42:57.9332218Z               "path": "installer/install.ps1",
2026-06-21T23:42:57.9332304Z               "line": 184
2026-06-21T23:42:57.9332384Z             },
2026-06-21T23:42:57.9332452Z             {
2026-06-21T23:42:57.9332576Z               "path": "installer/install.sh",
2026-06-21T23:42:57.9332680Z               "line": 121
2026-06-21T23:42:57.9332867Z             }
2026-06-21T23:42:57.9332975Z           ]
2026-06-21T23:42:57.9333052Z         },
2026-06-21T23:42:57.9333148Z         "int": {
2026-06-21T23:42:57.9333239Z           "complete": false,
2026-06-21T23:42:57.9333333Z           "evidence": []
2026-06-21T23:42:57.9333415Z         },
2026-06-21T23:42:57.9333543Z         "unit": {
2026-06-21T23:42:57.9333638Z           "complete": false,
2026-06-21T23:42:57.9333735Z           "evidence": []
2026-06-21T23:42:57.9333834Z         }
2026-06-21T23:42:57.9333930Z       }
2026-06-21T23:42:57.9334012Z     },
2026-06-21T23:42:57.9334098Z     {
2026-06-21T23:42:57.9334196Z       "id": "REQ-INSTALL-9",
2026-06-21T23:42:57.9335419Z       "title": "Adapter add from a GitHub release archive: `spt adapter add --release <user/repo> [--tag <tag>] [--asset <name>]` fetches a `.spt` tar asset over HTTPS+GitHub trust, extracts it to the durable adapters/_github home, and registers the root — ships built binaries source-free and versioned (the distribution path for an adapter whose dev repo is a monorepo subdir, where --github root-only clone does not fit)",
2026-06-21T23:42:57.9335528Z       "requiredStages": [
2026-06-21T23:42:57.9335614Z         "doc",
2026-06-21T23:42:57.9335701Z         "impl",
2026-06-21T23:42:57.9335786Z         "unit"
2026-06-21T23:42:57.9335871Z       ],
2026-06-21T23:42:57.9335963Z       "stages": {
2026-06-21T23:42:57.9336058Z         "doc": {
2026-06-21T23:42:57.9336157Z           "complete": true,
2026-06-21T23:42:57.9336264Z           "evidence": [
2026-06-21T23:42:57.9336359Z             {
2026-06-21T23:42:57.9336463Z               "path": "CONTEXT.md",
2026-06-21T23:42:57.9336569Z               "line": 771
2026-06-21T23:42:57.9336660Z             }
2026-06-21T23:42:57.9336748Z           ]
2026-06-21T23:42:57.9336843Z         },
2026-06-21T23:42:57.9336929Z         "impl": {
2026-06-21T23:42:57.9337028Z           "complete": true,
2026-06-21T23:42:57.9337122Z           "evidence": [
2026-06-21T23:42:57.9337213Z             {
2026-06-21T23:42:57.9337323Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9337423Z               "line": 2535
2026-06-21T23:42:57.9337503Z             },
2026-06-21T23:42:57.9337609Z             {
2026-06-21T23:42:57.9337718Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9337799Z               "line": 2559
2026-06-21T23:42:57.9337886Z             }
2026-06-21T23:42:57.9337976Z           ]
2026-06-21T23:42:57.9338061Z         },
2026-06-21T23:42:57.9338152Z         "int": {
2026-06-21T23:42:57.9338244Z           "complete": false,
2026-06-21T23:42:57.9338343Z           "evidence": []
2026-06-21T23:42:57.9338434Z         },
2026-06-21T23:42:57.9338515Z         "unit": {
2026-06-21T23:42:57.9338601Z           "complete": true,
2026-06-21T23:42:57.9338705Z           "evidence": [
2026-06-21T23:42:57.9338791Z             {
2026-06-21T23:42:57.9338892Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9339087Z               "line": 7591
2026-06-21T23:42:57.9339174Z             },
2026-06-21T23:42:57.9339268Z             {
2026-06-21T23:42:57.9339368Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9339469Z               "line": 8433
2026-06-21T23:42:57.9339555Z             }
2026-06-21T23:42:57.9339649Z           ]
2026-06-21T23:42:57.9339738Z         }
2026-06-21T23:42:57.9339954Z       }
2026-06-21T23:42:57.9340034Z     },
2026-06-21T23:42:57.9340116Z     {
2026-06-21T23:42:57.9340212Z       "id": "REQ-KICK-1",
2026-06-21T23:42:57.9342693Z       "title": "Explicit, loud controller displacement: `spt rc kick <target>` / `--take` (Take intent) kicks the incumbent controller and becomes controller; the displaced controller receives a LOUD `Displaced{by}` notice and is FULLY DETACHED (not demoted to a viewer). A default attach to a controlled endpoint is NEVER a silent displace (it is the Control busy-refusal). An old (N-1) rc omits intent → Control, so it can drive a free endpoint but CANNOT `--take` — it can never silently steal, and gets a clean busy-refusal instead. Taking control rides the same access_check(endpoint, origin, Unsolicited) as a normal control attach (if you may drive, you may take — no elevated kick policy). The picker surfaces 'Kick <node> and attach' (Take) only on a controlled (blue ■) endpoint, via the existing attach dispatch (single-bringup-path: intent is a parameter).",
2026-06-21T23:42:57.9342930Z       "requiredStages": [
2026-06-21T23:42:57.9343017Z         "doc",
2026-06-21T23:42:57.9343112Z         "impl",
2026-06-21T23:42:57.9343197Z         "unit",
2026-06-21T23:42:57.9343283Z         "int"
2026-06-21T23:42:57.9343370Z       ],
2026-06-21T23:42:57.9343455Z       "stages": {
2026-06-21T23:42:57.9343545Z         "doc": {
2026-06-21T23:42:57.9343642Z           "complete": true,
2026-06-21T23:42:57.9343727Z           "evidence": [
2026-06-21T23:42:57.9343803Z             {
2026-06-21T23:42:57.9343893Z               "path": "CONTEXT.md",
2026-06-21T23:42:57.9343985Z               "line": 342
2026-06-21T23:42:57.9344089Z             }
2026-06-21T23:42:57.9344175Z           ]
2026-06-21T23:42:57.9344267Z         },
2026-06-21T23:42:57.9344348Z         "impl": {
2026-06-21T23:42:57.9344437Z           "complete": true,
2026-06-21T23:42:57.9344523Z           "evidence": [
2026-06-21T23:42:57.9344610Z             {
2026-06-21T23:42:57.9344737Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T23:42:57.9344889Z               "line": 41
2026-06-21T23:42:57.9344980Z             },
2026-06-21T23:42:57.9345068Z             {
2026-06-21T23:42:57.9345177Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:42:57.9345268Z               "line": 701
2026-06-21T23:42:57.9345350Z             }
2026-06-21T23:42:57.9345440Z           ]
2026-06-21T23:42:57.9345521Z         },
2026-06-21T23:42:57.9345613Z         "int": {
2026-06-21T23:42:57.9345708Z           "complete": true,
2026-06-21T23:42:57.9345797Z           "evidence": [
2026-06-21T23:42:57.9345875Z             {
2026-06-21T23:42:57.9345998Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T23:42:57.9346107Z               "line": 916
2026-06-21T23:42:57.9346184Z             }
2026-06-21T23:42:57.9346275Z           ]
2026-06-21T23:42:57.9346366Z         },
2026-06-21T23:42:57.9346451Z         "unit": {
2026-06-21T23:42:57.9346542Z           "complete": true,
2026-06-21T23:42:57.9346641Z           "evidence": [
2026-06-21T23:42:57.9346732Z             {
2026-06-21T23:42:57.9346852Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T23:42:57.9346952Z               "line": 205
2026-06-21T23:42:57.9347042Z             }
2026-06-21T23:42:57.9347124Z           ]
2026-06-21T23:42:57.9347220Z         }
2026-06-21T23:42:57.9347308Z       }
2026-06-21T23:42:57.9347394Z     },
2026-06-21T23:42:57.9347470Z     {
2026-06-21T23:42:57.9347579Z       "id": "REQ-MANIFEST-1",
2026-06-21T23:42:57.9347768Z       "title": "Per-adapter manifest with adapter_name and min_spt_core_version",
2026-06-21T23:42:57.9347860Z       "requiredStages": [
2026-06-21T23:42:57.9347955Z         "doc",
2026-06-21T23:42:57.9348045Z         "impl",
2026-06-21T23:42:57.9348131Z         "unit"
2026-06-21T23:42:57.9348221Z       ],
2026-06-21T23:42:57.9348307Z       "stages": {
2026-06-21T23:42:57.9348397Z         "doc": {
2026-06-21T23:42:57.9348485Z           "complete": true,
2026-06-21T23:42:57.9348664Z           "evidence": [
2026-06-21T23:42:57.9348737Z             {
2026-06-21T23:42:57.9348846Z               "path": "docs/MANIFEST.md",
2026-06-21T23:42:57.9348927Z               "line": 19
2026-06-21T23:42:57.9349100Z             }
2026-06-21T23:42:57.9349194Z           ]
2026-06-21T23:42:57.9349279Z         },
2026-06-21T23:42:57.9349361Z         "impl": {
2026-06-21T23:42:57.9349453Z           "complete": true,
2026-06-21T23:42:57.9349566Z           "evidence": [
2026-06-21T23:42:57.9349647Z             {
2026-06-21T23:42:57.9349777Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:42:57.9349875Z               "line": 18
2026-06-21T23:42:57.9350063Z             }
2026-06-21T23:42:57.9350148Z           ]
2026-06-21T23:42:57.9350233Z         },
2026-06-21T23:42:57.9350328Z         "int": {
2026-06-21T23:42:57.9350424Z           "complete": false,
2026-06-21T23:42:57.9350514Z           "evidence": []
2026-06-21T23:42:57.9350604Z         },
2026-06-21T23:42:57.9350700Z         "unit": {
2026-06-21T23:42:57.9350796Z           "complete": true,
2026-06-21T23:42:57.9350885Z           "evidence": [
2026-06-21T23:42:57.9350977Z             {
2026-06-21T23:42:57.9351091Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:42:57.9351190Z               "line": 1029
2026-06-21T23:42:57.9351282Z             },
2026-06-21T23:42:57.9351354Z             {
2026-06-21T23:42:57.9351482Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:42:57.9351572Z               "line": 1325
2026-06-21T23:42:57.9351664Z             },
2026-06-21T23:42:57.9351739Z             {
2026-06-21T23:42:57.9351863Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:42:57.9351965Z               "line": 1337
2026-06-21T23:42:57.9352045Z             },
2026-06-21T23:42:57.9352135Z             {
2026-06-21T23:42:57.9352240Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:42:57.9352332Z               "line": 1348
2026-06-21T23:42:57.9352411Z             },
2026-06-21T23:42:57.9352501Z             {
2026-06-21T23:42:57.9352616Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:42:57.9352710Z               "line": 1365
2026-06-21T23:42:57.9352799Z             },
2026-06-21T23:42:57.9352885Z             {
2026-06-21T23:42:57.9353005Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:42:57.9353090Z               "line": 1379
2026-06-21T23:42:57.9353185Z             },
2026-06-21T23:42:57.9353272Z             {
2026-06-21T23:42:57.9353390Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:42:57.9353490Z               "line": 1495
2026-06-21T23:42:57.9353568Z             },
2026-06-21T23:42:57.9353653Z             {
2026-06-21T23:42:57.9353767Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:42:57.9353853Z               "line": 1510
2026-06-21T23:42:57.9353944Z             },
2026-06-21T23:42:57.9354030Z             {
2026-06-21T23:42:57.9354158Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:42:57.9354254Z               "line": 1621
2026-06-21T23:42:57.9354344Z             },
2026-06-21T23:42:57.9354434Z             {
2026-06-21T23:42:57.9354550Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:42:57.9354645Z               "line": 1632
2026-06-21T23:42:57.9354726Z             }
2026-06-21T23:42:57.9354812Z           ]
2026-06-21T23:42:57.9354893Z         }
2026-06-21T23:42:57.9354983Z       }
2026-06-21T23:42:57.9355078Z     },
2026-06-21T23:42:57.9355161Z     {
2026-06-21T23:42:57.9355265Z       "id": "REQ-MANIFEST-2",
2026-06-21T23:42:57.9355776Z       "title": "Adapter profiles — sparse leaf-replace overlays (shipped + local), composite <adapter>:<profile> addressing, shadow-refusal, tighten-only consent floors",
2026-06-21T23:42:57.9355891Z       "requiredStages": [
2026-06-21T23:42:57.9355981Z         "doc",
2026-06-21T23:42:57.9356076Z         "impl",
2026-06-21T23:42:57.9356158Z         "unit"
2026-06-21T23:42:57.9356352Z       ],
2026-06-21T23:42:57.9356445Z       "stages": {
2026-06-21T23:42:57.9356530Z         "doc": {
2026-06-21T23:42:57.9356629Z           "complete": true,
2026-06-21T23:42:57.9356720Z           "evidence": [
2026-06-21T23:42:57.9356811Z             {
2026-06-21T23:42:57.9356911Z               "path": "CONTEXT.md",
2026-06-21T23:42:57.9357001Z               "line": 75
2026-06-21T23:42:57.9357098Z             }
2026-06-21T23:42:57.9357183Z           ]
2026-06-21T23:42:57.9357273Z         },
2026-06-21T23:42:57.9357359Z         "impl": {
2026-06-21T23:42:57.9357455Z           "complete": true,
2026-06-21T23:42:57.9357554Z           "evidence": [
2026-06-21T23:42:57.9357709Z             {
2026-06-21T23:42:57.9357836Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:42:57.9357925Z               "line": 82
2026-06-21T23:42:57.9358011Z             },
2026-06-21T23:42:57.9358087Z             {
2026-06-21T23:42:57.9358209Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T23:42:57.9358323Z               "line": 15
2026-06-21T23:42:57.9358415Z             },
2026-06-21T23:42:57.9358496Z             {
2026-06-21T23:42:57.9358614Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T23:42:57.9358706Z               "line": 65
2026-06-21T23:42:57.9358796Z             },
2026-06-21T23:42:57.9358886Z             {
2026-06-21T23:42:57.9359092Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T23:42:57.9359177Z               "line": 83
2026-06-21T23:42:57.9359272Z             },
2026-06-21T23:42:57.9359354Z             {
2026-06-21T23:42:57.9359478Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T23:42:57.9359573Z               "line": 183
2026-06-21T23:42:57.9359660Z             },
2026-06-21T23:42:57.9359745Z             {
2026-06-21T23:42:57.9359859Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T23:42:57.9359946Z               "line": 527
2026-06-21T23:42:57.9360041Z             },
2026-06-21T23:42:57.9360131Z             {
2026-06-21T23:42:57.9360246Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T23:42:57.9360333Z               "line": 553
2026-06-21T23:42:57.9360421Z             },
2026-06-21T23:42:57.9360503Z             {
2026-06-21T23:42:57.9360623Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T23:42:57.9360713Z               "line": 671
2026-06-21T23:42:57.9360802Z             },
2026-06-21T23:42:57.9360878Z             {
2026-06-21T23:42:57.9360989Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T23:42:57.9361083Z               "line": 696
2026-06-21T23:42:57.9361164Z             },
2026-06-21T23:42:57.9361250Z             {
2026-06-21T23:42:57.9361361Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T23:42:57.9361450Z               "line": 719
2026-06-21T23:42:57.9361542Z             },
2026-06-21T23:42:57.9361628Z             {
2026-06-21T23:42:57.9361750Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T23:42:57.9361851Z               "line": 734
2026-06-21T23:42:57.9361943Z             },
2026-06-21T23:42:57.9362018Z             {
2026-06-21T23:42:57.9362132Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9362229Z               "line": 5567
2026-06-21T23:42:57.9362313Z             },
2026-06-21T23:42:57.9362394Z             {
2026-06-21T23:42:57.9362496Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9362610Z               "line": 5581
2026-06-21T23:42:57.9362695Z             },
2026-06-21T23:42:57.9362772Z             {
2026-06-21T23:42:57.9362878Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9362966Z               "line": 5615
2026-06-21T23:42:57.9363057Z             }
2026-06-21T23:42:57.9363142Z           ]
2026-06-21T23:42:57.9363228Z         },
2026-06-21T23:42:57.9363316Z         "int": {
2026-06-21T23:42:57.9363406Z           "complete": false,
2026-06-21T23:42:57.9363508Z           "evidence": []
2026-06-21T23:42:57.9363707Z         },
2026-06-21T23:42:57.9363803Z         "unit": {
2026-06-21T23:42:57.9363899Z           "complete": true,
2026-06-21T23:42:57.9364012Z           "evidence": [
2026-06-21T23:42:57.9364099Z             {
2026-06-21T23:42:57.9364218Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T23:42:57.9364303Z               "line": 921
2026-06-21T23:42:57.9364389Z             },
2026-06-21T23:42:57.9364472Z             {
2026-06-21T23:42:57.9364576Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T23:42:57.9364670Z               "line": 211
2026-06-21T23:42:57.9364757Z             },
2026-06-21T23:42:57.9364952Z             {
2026-06-21T23:42:57.9365072Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T23:42:57.9365153Z               "line": 272
2026-06-21T23:42:57.9369867Z             },
2026-06-21T23:42:57.9369967Z             {
2026-06-21T23:42:57.9370123Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T23:42:57.9370244Z               "line": 313
2026-06-21T23:42:57.9370338Z             },
2026-06-21T23:42:57.9370433Z             {
2026-06-21T23:42:57.9370558Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T23:42:57.9370657Z               "line": 325
2026-06-21T23:42:57.9370743Z             },
2026-06-21T23:42:57.9370826Z             {
2026-06-21T23:42:57.9370935Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T23:42:57.9371025Z               "line": 336
2026-06-21T23:42:57.9371126Z             },
2026-06-21T23:42:57.9371207Z             {
2026-06-21T23:42:57.9371329Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T23:42:57.9371419Z               "line": 345
2026-06-21T23:42:57.9371505Z             },
2026-06-21T23:42:57.9371583Z             {
2026-06-21T23:42:57.9371705Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T23:42:57.9371797Z               "line": 361
2026-06-21T23:42:57.9371873Z             },
2026-06-21T23:42:57.9371968Z             {
2026-06-21T23:42:57.9372072Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T23:42:57.9372169Z               "line": 444
2026-06-21T23:42:57.9372250Z             },
2026-06-21T23:42:57.9372334Z             {
2026-06-21T23:42:57.9372460Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T23:42:57.9372545Z               "line": 958
2026-06-21T23:42:57.9372621Z             },
2026-06-21T23:42:57.9372697Z             {
2026-06-21T23:42:57.9372822Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T23:42:57.9372917Z               "line": 982
2026-06-21T23:42:57.9373007Z             },
2026-06-21T23:42:57.9373099Z             {
2026-06-21T23:42:57.9373216Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T23:42:57.9373312Z               "line": 1008
2026-06-21T23:42:57.9373399Z             },
2026-06-21T23:42:57.9373490Z             {
2026-06-21T23:42:57.9373612Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T23:42:57.9373707Z               "line": 1027
2026-06-21T23:42:57.9373788Z             },
2026-06-21T23:42:57.9373867Z             {
2026-06-21T23:42:57.9373981Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T23:42:57.9374072Z               "line": 1058
2026-06-21T23:42:57.9374159Z             },
2026-06-21T23:42:57.9374248Z             {
2026-06-21T23:42:57.9374363Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T23:42:57.9374449Z               "line": 309
2026-06-21T23:42:57.9374539Z             },
2026-06-21T23:42:57.9374624Z             {
2026-06-21T23:42:57.9374731Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T23:42:57.9374831Z               "line": 606
2026-06-21T23:42:57.9374916Z             },
2026-06-21T23:42:57.9375003Z             {
2026-06-21T23:42:57.9375107Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9375192Z               "line": 8610
2026-06-21T23:42:57.9375455Z             },
2026-06-21T23:42:57.9375536Z             {
2026-06-21T23:42:57.9375642Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9375731Z               "line": 9558
2026-06-21T23:42:57.9375817Z             }
2026-06-21T23:42:57.9375903Z           ]
2026-06-21T23:42:57.9375991Z         }
2026-06-21T23:42:57.9376079Z       }
2026-06-21T23:42:57.9376165Z     },
2026-06-21T23:42:57.9376257Z     {
2026-06-21T23:42:57.9376361Z       "id": "REQ-MANIFEST-3",
2026-06-21T23:42:57.9377077Z       "title": "Adapter strings — [strings] KV tree, dot-path get-string resolving through the profile leaf-replace overlay, set-string editing a local profile's [strings] only; data-only (nothing executes a string)",
2026-06-21T23:42:57.9377293Z       "requiredStages": [
2026-06-21T23:42:57.9377378Z         "doc",
2026-06-21T23:42:57.9377478Z         "impl",
2026-06-21T23:42:57.9377570Z         "unit"
2026-06-21T23:42:57.9377655Z       ],
2026-06-21T23:42:57.9377740Z       "stages": {
2026-06-21T23:42:57.9377836Z         "doc": {
2026-06-21T23:42:57.9377931Z           "complete": true,
2026-06-21T23:42:57.9378022Z           "evidence": [
2026-06-21T23:42:57.9378108Z             {
2026-06-21T23:42:57.9378204Z               "path": "CONTEXT.md",
2026-06-21T23:42:57.9378289Z               "line": 81
2026-06-21T23:42:57.9378369Z             }
2026-06-21T23:42:57.9378455Z           ]
2026-06-21T23:42:57.9378538Z         },
2026-06-21T23:42:57.9378627Z         "impl": {
2026-06-21T23:42:57.9378723Z           "complete": true,
2026-06-21T23:42:57.9378814Z           "evidence": [
2026-06-21T23:42:57.9378895Z             {
2026-06-21T23:42:57.9379127Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:42:57.9379212Z               "line": 92
2026-06-21T23:42:57.9379301Z             },
2026-06-21T23:42:57.9379386Z             {
2026-06-21T23:42:57.9379506Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T23:42:57.9379602Z               "line": 101
2026-06-21T23:42:57.9379687Z             },
2026-06-21T23:42:57.9379763Z             {
2026-06-21T23:42:57.9379884Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T23:42:57.9379978Z               "line": 132
2026-06-21T23:42:57.9380064Z             },
2026-06-21T23:42:57.9380150Z             {
2026-06-21T23:42:57.9380274Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T23:42:57.9380359Z               "line": 577
2026-06-21T23:42:57.9380442Z             },
2026-06-21T23:42:57.9380527Z             {
2026-06-21T23:42:57.9380645Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T23:42:57.9380731Z               "line": 633
2026-06-21T23:42:57.9380827Z             },
2026-06-21T23:42:57.9380908Z             {
2026-06-21T23:42:57.9381017Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9381109Z               "line": 5628
2026-06-21T23:42:57.9381194Z             },
2026-06-21T23:42:57.9381275Z             {
2026-06-21T23:42:57.9381376Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9381476Z               "line": 5654
2026-06-21T23:42:57.9381565Z             }
2026-06-21T23:42:57.9381647Z           ]
2026-06-21T23:42:57.9381739Z         },
2026-06-21T23:42:57.9381819Z         "int": {
2026-06-21T23:42:57.9381917Z           "complete": false,
2026-06-21T23:42:57.9382003Z           "evidence": []
2026-06-21T23:42:57.9382090Z         },
2026-06-21T23:42:57.9382171Z         "unit": {
2026-06-21T23:42:57.9382265Z           "complete": true,
2026-06-21T23:42:57.9382352Z           "evidence": [
2026-06-21T23:42:57.9382434Z             {
2026-06-21T23:42:57.9382547Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T23:42:57.9382637Z               "line": 371
2026-06-21T23:42:57.9382729Z             },
2026-06-21T23:42:57.9382815Z             {
2026-06-21T23:42:57.9382933Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T23:42:57.9383015Z               "line": 429
2026-06-21T23:42:57.9383091Z             },
2026-06-21T23:42:57.9383301Z             {
2026-06-21T23:42:57.9383420Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T23:42:57.9383520Z               "line": 1082
2026-06-21T23:42:57.9383606Z             },
2026-06-21T23:42:57.9383693Z             {
2026-06-21T23:42:57.9383800Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9383882Z               "line": 8703
2026-06-21T23:42:57.9383964Z             }
2026-06-21T23:42:57.9384050Z           ]
2026-06-21T23:42:57.9384139Z         }
2026-06-21T23:42:57.9384224Z       }
2026-06-21T23:42:57.9384305Z     },
2026-06-21T23:42:57.9384391Z     {
2026-06-21T23:42:57.9384480Z       "id": "REQ-MANIFEST-4",
2026-06-21T23:42:57.9385428Z       "title": "Keyword hints — [[hints]] {keywords (literal/regex), text}; spt api hint --session emits at most one matched hint per message, once per session (seen-set), declaration-order first match; profiles overlay [[hints]] by leaf-replace",
2026-06-21T23:42:57.9385534Z       "requiredStages": [
2026-06-21T23:42:57.9385620Z         "doc",
2026-06-21T23:42:57.9385706Z         "impl",
2026-06-21T23:42:57.9385795Z         "unit"
2026-06-21T23:42:57.9385877Z       ],
2026-06-21T23:42:57.9385963Z       "stages": {
2026-06-21T23:42:57.9386049Z         "doc": {
2026-06-21T23:42:57.9386148Z           "complete": true,
2026-06-21T23:42:57.9386240Z           "evidence": [
2026-06-21T23:42:57.9386325Z             {
2026-06-21T23:42:57.9386425Z               "path": "CONTEXT.md",
2026-06-21T23:42:57.9386526Z               "line": 88
2026-06-21T23:42:57.9386607Z             }
2026-06-21T23:42:57.9386697Z           ]
2026-06-21T23:42:57.9386783Z         },
2026-06-21T23:42:57.9386880Z         "impl": {
2026-06-21T23:42:57.9386977Z           "complete": true,
2026-06-21T23:42:57.9387068Z           "evidence": [
2026-06-21T23:42:57.9387158Z             {
2026-06-21T23:42:57.9387290Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:42:57.9387390Z               "line": 100
2026-06-21T23:42:57.9387485Z             },
2026-06-21T23:42:57.9387572Z             {
2026-06-21T23:42:57.9387699Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:42:57.9387786Z               "line": 183
2026-06-21T23:42:57.9387877Z             },
2026-06-21T23:42:57.9387952Z             {
2026-06-21T23:42:57.9388076Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:42:57.9388172Z               "line": 83
2026-06-21T23:42:57.9388258Z             },
2026-06-21T23:42:57.9388353Z             {
2026-06-21T23:42:57.9388478Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:42:57.9388582Z               "line": 629
2026-06-21T23:42:57.9388677Z             },
2026-06-21T23:42:57.9388764Z             {
2026-06-21T23:42:57.9388892Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:42:57.9389055Z               "line": 654
2026-06-21T23:42:57.9389140Z             }
2026-06-21T23:42:57.9389230Z           ]
2026-06-21T23:42:57.9389316Z         },
2026-06-21T23:42:57.9389418Z         "int": {
2026-06-21T23:42:57.9389530Z           "complete": false,
2026-06-21T23:42:57.9389625Z           "evidence": []
2026-06-21T23:42:57.9389706Z         },
2026-06-21T23:42:57.9389791Z         "unit": {
2026-06-21T23:42:57.9389875Z           "complete": true,
2026-06-21T23:42:57.9389970Z           "evidence": [
2026-06-21T23:42:57.9390047Z             {
2026-06-21T23:42:57.9390176Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:42:57.9390261Z               "line": 1445
2026-06-21T23:42:57.9390347Z             },
2026-06-21T23:42:57.9390434Z             {
2026-06-21T23:42:57.9390557Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:42:57.9390653Z               "line": 1478
2026-06-21T23:42:57.9390739Z             },
2026-06-21T23:42:57.9390824Z             {
2026-06-21T23:42:57.9390943Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:42:57.9391035Z               "line": 988
2026-06-21T23:42:57.9391225Z             }
2026-06-21T23:42:57.9391306Z           ]
2026-06-21T23:42:57.9391392Z         }
2026-06-21T23:42:57.9391478Z       }
2026-06-21T23:42:57.9391563Z     },
2026-06-21T23:42:57.9391646Z     {
2026-06-21T23:42:57.9391735Z       "id": "REQ-MANIFEST-5",
2026-06-21T23:42:57.9394620Z       "title": "File-backed adapter [strings] (M12-W3-T3.1): a [strings] dot-path value MAY be an inline-table FILE POINTER `key = { file = \"rel/path\" }` resolved to the file's contents at get-string time, keeping large bodies (skill-instructions, hint text) out of the manifest. A value-position table with a `file` key IS the pointer form (reserved — cannot double as data). Per-adapter aux storage `adapters/<adapter>/strings/`; pointers resolve relative to it with CONTAINMENT (reject `..`/absolute escaping the dir). UPDATE-SAFETY: a LOCAL profile's file-pointers resolve relative to the user-owned local-profile dir (NOT adapter-shipped strings/, which adapter updates overwrite), or the local profile inlines. Validate-at-register (fail-fast on a bad/escaping/missing pointer) + LAZY read at get-string (live file edits reflect, no re-register) + skip-diagnostics on missing-at-read (no hard-crash, mirrors [digest]). Rides the same leaf-replace profile overlay as the rest of [strings].",
2026-06-21T23:42:57.9394832Z       "requiredStages": [
2026-06-21T23:42:57.9394923Z         "doc",
2026-06-21T23:42:57.9395007Z         "impl",
2026-06-21T23:42:57.9395087Z         "unit"
2026-06-21T23:42:57.9395173Z       ],
2026-06-21T23:42:57.9395260Z       "stages": {
2026-06-21T23:42:57.9395345Z         "doc": {
2026-06-21T23:42:57.9395440Z           "complete": true,
2026-06-21T23:42:57.9395522Z           "evidence": [
2026-06-21T23:42:57.9395617Z             {
2026-06-21T23:42:57.9395707Z               "path": "CONTEXT.md",
2026-06-21T23:42:57.9395803Z               "line": 83
2026-06-21T23:42:57.9395889Z             }
2026-06-21T23:42:57.9395974Z           ]
2026-06-21T23:42:57.9396065Z         },
2026-06-21T23:42:57.9396147Z         "impl": {
2026-06-21T23:42:57.9396261Z           "complete": true,
2026-06-21T23:42:57.9396355Z           "evidence": [
2026-06-21T23:42:57.9396442Z             {
2026-06-21T23:42:57.9396575Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T23:42:57.9396665Z               "line": 120
2026-06-21T23:42:57.9396753Z             }
2026-06-21T23:42:57.9396834Z           ]
2026-06-21T23:42:57.9396923Z         },
2026-06-21T23:42:57.9397004Z         "int": {
2026-06-21T23:42:57.9397106Z           "complete": false,
2026-06-21T23:42:57.9397200Z           "evidence": []
2026-06-21T23:42:57.9397285Z         },
2026-06-21T23:42:57.9397382Z         "unit": {
2026-06-21T23:42:57.9397487Z           "complete": true,
2026-06-21T23:42:57.9397590Z           "evidence": [
2026-06-21T23:42:57.9397675Z             {
2026-06-21T23:42:57.9397804Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-21T23:42:57.9397888Z               "line": 404
2026-06-21T23:42:57.9397973Z             },
2026-06-21T23:42:57.9398064Z             {
2026-06-21T23:42:57.9398179Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T23:42:57.9398274Z               "line": 1155
2026-06-21T23:42:57.9398360Z             },
2026-06-21T23:42:57.9398451Z             {
2026-06-21T23:42:57.9398574Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T23:42:57.9398656Z               "line": 1184
2026-06-21T23:42:57.9398742Z             },
2026-06-21T23:42:57.9398823Z             {
2026-06-21T23:42:57.9399024Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T23:42:57.9399113Z               "line": 1224
2026-06-21T23:42:57.9399204Z             },
2026-06-21T23:42:57.9399305Z             {
2026-06-21T23:42:57.9399414Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T23:42:57.9399523Z               "line": 1239
2026-06-21T23:42:57.9399610Z             }
2026-06-21T23:42:57.9399696Z           ]
2026-06-21T23:42:57.9399775Z         }
2026-06-21T23:42:57.9399862Z       }
2026-06-21T23:42:57.9400058Z     },
2026-06-21T23:42:57.9400133Z     {
2026-06-21T23:42:57.9400237Z       "id": "REQ-MANIFEST-6",
2026-06-21T23:42:57.9402328Z       "title": "Cross-adapter fallback target addressing (M12-W3-T3.2): a cross-adapter fallback target is addressed as `<adapter>:<profile>` (not just a bare adapter_name), resolved through the one composite-addressing resolver (registry::resolve_option) at every adapter-option read site so a fallback may select a shipped/local profile (e.g. a `ccs` profile). CONTEXT.md §cross-adapter-fallback reconciled (\"ccs is a profile; cross-adapter fallback may target <adapter>:<profile>\"). Contract-only this milestone: the node-wide fallback SETTING + its rate-limit invocation are deferred to the consuming milestone (the runtime path does not exist yet); this REQ guarantees the ADDRESSING resolves.",
2026-06-21T23:42:57.9402535Z       "requiredStages": [
2026-06-21T23:42:57.9402629Z         "doc",
2026-06-21T23:42:57.9402715Z         "unit"
2026-06-21T23:42:57.9402802Z       ],
2026-06-21T23:42:57.9402892Z       "stages": {
2026-06-21T23:42:57.9402981Z         "doc": {
2026-06-21T23:42:57.9403075Z           "complete": true,
2026-06-21T23:42:57.9403162Z           "evidence": [
2026-06-21T23:42:57.9403249Z             {
2026-06-21T23:42:57.9403353Z               "path": "CONTEXT.md",
2026-06-21T23:42:57.9403438Z               "line": 141
2026-06-21T23:42:57.9403525Z             }
2026-06-21T23:42:57.9403606Z           ]
2026-06-21T23:42:57.9403686Z         },
2026-06-21T23:42:57.9403777Z         "impl": {
2026-06-21T23:42:57.9403873Z           "complete": false,
2026-06-21T23:42:57.9403954Z           "evidence": []
2026-06-21T23:42:57.9404043Z         },
2026-06-21T23:42:57.9404131Z         "int": {
2026-06-21T23:42:57.9404211Z           "complete": false,
2026-06-21T23:42:57.9404306Z           "evidence": []
2026-06-21T23:42:57.9404377Z         },
2026-06-21T23:42:57.9404469Z         "unit": {
2026-06-21T23:42:57.9404569Z           "complete": true,
2026-06-21T23:42:57.9404664Z           "evidence": [
2026-06-21T23:42:57.9404751Z             {
2026-06-21T23:42:57.9404874Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T23:42:57.9404969Z               "line": 1261
2026-06-21T23:42:57.9405041Z             }
2026-06-21T23:42:57.9405132Z           ]
2026-06-21T23:42:57.9405226Z         }
2026-06-21T23:42:57.9405302Z       }
2026-06-21T23:42:57.9405378Z     },
2026-06-21T23:42:57.9405459Z     {
2026-06-21T23:42:57.9405567Z       "id": "REQ-MANIFEST-7",
2026-06-21T23:42:57.9408572Z       "title": "Adapter-declared shortcut basename (M12-W2 follow-on): an optional `[adapter] shortcut_basename` manifest field names the basename the `spt endpoint run` picker bakes into the generated `<basename>-<id>` launcher shortcut (REQ-RUN-SHORTCUT). Absent ⇒ the harness-agnostic default `spt` (→ `spt-<id>`); an adapter sets it to brand its shortcuts (claude-spt → `cc` → `cc-<id>`), so the Claude-Code-ness lives in the PUBLISHED adapter manifest, never hardcoded in spt-core. The picker reads it from the RESOLVED manifest of the selected adapter (registry::resolve_option), falling back to `spt` when absent/empty/unresolvable. Additive + N-1-safe (serde-default Option, omitted from serialization when absent; old manifests parse clean); manifest.schema.json regenerated from the derive (ADR-0001, CI drift-gated). Documented in docs/MANIFEST.md `[adapter]` section + the claude-spt worked example — the adapter-author contract perri builds spt-claude-code against.",
2026-06-21T23:42:57.9408692Z       "requiredStages": [
2026-06-21T23:42:57.9408782Z         "doc",
2026-06-21T23:42:57.9408872Z         "impl",
2026-06-21T23:42:57.9409040Z         "unit"
2026-06-21T23:42:57.9409120Z       ],
2026-06-21T23:42:57.9409211Z       "stages": {
2026-06-21T23:42:57.9409312Z         "doc": {
2026-06-21T23:42:57.9409407Z           "complete": true,
2026-06-21T23:42:57.9409492Z           "evidence": [
2026-06-21T23:42:57.9409598Z             {
2026-06-21T23:42:57.9409697Z               "path": "docs/MANIFEST.md",
2026-06-21T23:42:57.9409923Z               "line": 35
2026-06-21T23:42:57.9409997Z             }
2026-06-21T23:42:57.9410088Z           ]
2026-06-21T23:42:57.9410180Z         },
2026-06-21T23:42:57.9410261Z         "impl": {
2026-06-21T23:42:57.9410350Z           "complete": true,
2026-06-21T23:42:57.9410456Z           "evidence": [
2026-06-21T23:42:57.9410543Z             {
2026-06-21T23:42:57.9410650Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T23:42:57.9410745Z               "line": 54
2026-06-21T23:42:57.9410836Z             }
2026-06-21T23:42:57.9410921Z           ]
2026-06-21T23:42:57.9411005Z         },
2026-06-21T23:42:57.9411191Z         "int": {
2026-06-21T23:42:57.9411292Z           "complete": false,
2026-06-21T23:42:57.9411377Z           "evidence": []
2026-06-21T23:42:57.9411468Z         },
2026-06-21T23:42:57.9411559Z         "unit": {
2026-06-21T23:42:57.9411649Z           "complete": true,
2026-06-21T23:42:57.9411739Z           "evidence": [
2026-06-21T23:42:57.9411822Z             {
2026-06-21T23:42:57.9411950Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:42:57.9412030Z               "line": 1638
2026-06-21T23:42:57.9412117Z             }
2026-06-21T23:42:57.9412202Z           ]
2026-06-21T23:42:57.9412283Z         }
2026-06-21T23:42:57.9412369Z       }
2026-06-21T23:42:57.9412451Z     },
2026-06-21T23:42:57.9412536Z     {
2026-06-21T23:42:57.9412622Z       "id": "REQ-MANIFEST-8",
2026-06-21T23:42:57.9414791Z       "title": "[adapter] host_binaries declares the harness executable basenames a kind=\"harness\" adapter hosts agents inside (e.g. host_binaries = [\"claude\"]); bind-time pid→exe-basename match (case-insensitive, .exe-stripped) over the seed's parent_pid selects the candidate adapter set; zero matches → a friendly error naming the binary + the --adapter escape hatch. Additive + N-1-safe: optional Vec<String>, #[serde(default, skip_serializing_if = \"Vec::is_empty\")] (omitted-serialized like shortcut_basename, old manifests parse clean); manifest.schema.json regenerated from the derive (ADR-0001, CI drift-gated). The match-key for ADR-0021 adapter-agnostic bind-time resolution. (v0.9.0)",
2026-06-21T23:42:57.9414900Z       "requiredStages": [
2026-06-21T23:42:57.9414986Z         "doc",
2026-06-21T23:42:57.9415077Z         "impl",
2026-06-21T23:42:57.9415167Z         "unit",
2026-06-21T23:42:57.9415248Z         "int"
2026-06-21T23:42:57.9415326Z       ],
2026-06-21T23:42:57.9415411Z       "stages": {
2026-06-21T23:42:57.9415486Z         "doc": {
2026-06-21T23:42:57.9415572Z           "complete": true,
2026-06-21T23:42:57.9415660Z           "evidence": [
2026-06-21T23:42:57.9415753Z             {
2026-06-21T23:42:57.9415852Z               "path": "CONTEXT.md",
2026-06-21T23:42:57.9415952Z               "line": 184
2026-06-21T23:42:57.9416033Z             },
2026-06-21T23:42:57.9416108Z             {
2026-06-21T23:42:57.9416207Z               "path": "docs/MANIFEST.md",
2026-06-21T23:42:57.9416294Z               "line": 46
2026-06-21T23:42:57.9416390Z             }
2026-06-21T23:42:57.9416470Z           ]
2026-06-21T23:42:57.9416561Z         },
2026-06-21T23:42:57.9416647Z         "impl": {
2026-06-21T23:42:57.9416747Z           "complete": true,
2026-06-21T23:42:57.9416846Z           "evidence": [
2026-06-21T23:42:57.9416929Z             {
2026-06-21T23:42:57.9417052Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T23:42:57.9417142Z               "line": 222
2026-06-21T23:42:57.9417234Z             },
2026-06-21T23:42:57.9417319Z             {
2026-06-21T23:42:57.9417438Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T23:42:57.9417524Z               "line": 306
2026-06-21T23:42:57.9417615Z             }
2026-06-21T23:42:57.9417705Z           ]
2026-06-21T23:42:57.9417786Z         },
2026-06-21T23:42:57.9417873Z         "int": {
2026-06-21T23:42:57.9417958Z           "complete": true,
2026-06-21T23:42:57.9418053Z           "evidence": [
2026-06-21T23:42:57.9418139Z             {
2026-06-21T23:42:57.9418344Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-06-21T23:42:57.9418439Z               "line": 18
2026-06-21T23:42:57.9418527Z             }
2026-06-21T23:42:57.9418616Z           ]
2026-06-21T23:42:57.9418701Z         },
2026-06-21T23:42:57.9418791Z         "unit": {
2026-06-21T23:42:57.9418891Z           "complete": true,
2026-06-21T23:42:57.9419055Z           "evidence": [
2026-06-21T23:42:57.9419147Z             {
2026-06-21T23:42:57.9419271Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:42:57.9419361Z               "line": 1656
2026-06-21T23:42:57.9419451Z             },
2026-06-21T23:42:57.9419643Z             {
2026-06-21T23:42:57.9419771Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T23:42:57.9419867Z               "line": 316
2026-06-21T23:42:57.9419962Z             },
2026-06-21T23:42:57.9420042Z             {
2026-06-21T23:42:57.9420158Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T23:42:57.9420252Z               "line": 332
2026-06-21T23:42:57.9420333Z             },
2026-06-21T23:42:57.9420425Z             {
2026-06-21T23:42:57.9420535Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T23:42:57.9420634Z               "line": 345
2026-06-21T23:42:57.9420715Z             },
2026-06-21T23:42:57.9420802Z             {
2026-06-21T23:42:57.9420919Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T23:42:57.9421006Z               "line": 422
2026-06-21T23:42:57.9421088Z             },
2026-06-21T23:42:57.9421174Z             {
2026-06-21T23:42:57.9421291Z               "path": "crates/spt-store/src/proc.rs",
2026-06-21T23:42:57.9421387Z               "line": 436
2026-06-21T23:42:57.9421477Z             }
2026-06-21T23:42:57.9421565Z           ]
2026-06-21T23:42:57.9421637Z         }
2026-06-21T23:42:57.9421727Z       }
2026-06-21T23:42:57.9421804Z     },
2026-06-21T23:42:57.9421894Z     {
2026-06-21T23:42:57.9421989Z       "id": "REQ-MESH-1",
2026-06-21T23:42:57.9424059Z       "title": "Membership proof (seed-proof): symmetric current-epoch seed-knowledge replaces is_trusted at EVERY inbound gate (registry apply, WAN receive, sync, notif, connection accept). MK = HKDF(seed, domain ‖ subnet_id ‖ seed_epoch); mutual channel-bound challenge-response at connect (transcript binds both handshake-proven node pubkeys, both nonces, subnet_id, seed_epoch, role); verified once per connection, cached on the broker ConnEntry, kept warm via QUIC keep-alive so re-proof is restart/partition/rotation-only. Exact-epoch match (re-seed is the sole N-1 exception). SECURITY INVARIANTS: channel-bound (no cross-connection replay), mutual, accepts a member it never paired (the mesh property).",
2026-06-21T23:42:57.9424168Z       "requiredStages": [
2026-06-21T23:42:57.9424254Z         "impl",
2026-06-21T23:42:57.9424335Z         "unit",
2026-06-21T23:42:57.9424416Z         "int"
2026-06-21T23:42:57.9424501Z       ],
2026-06-21T23:42:57.9424583Z       "stages": {
2026-06-21T23:42:57.9424669Z         "doc": {
2026-06-21T23:42:57.9424768Z           "complete": false,
2026-06-21T23:42:57.9424854Z           "evidence": []
2026-06-21T23:42:57.9424946Z         },
2026-06-21T23:42:57.9425026Z         "impl": {
2026-06-21T23:42:57.9425111Z           "complete": true,
2026-06-21T23:42:57.9425208Z           "evidence": [
2026-06-21T23:42:57.9425285Z             {
2026-06-21T23:42:57.9425403Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T23:42:57.9425488Z               "line": 972
2026-06-21T23:42:57.9425571Z             },
2026-06-21T23:42:57.9425656Z             {
2026-06-21T23:42:57.9425784Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T23:42:57.9425886Z               "line": 38
2026-06-21T23:42:57.9425971Z             },
2026-06-21T23:42:57.9426060Z             {
2026-06-21T23:42:57.9426181Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T23:42:57.9426276Z               "line": 161
2026-06-21T23:42:57.9426366Z             },
2026-06-21T23:42:57.9426565Z             {
2026-06-21T23:42:57.9426692Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T23:42:57.9426777Z               "line": 206
2026-06-21T23:42:57.9426864Z             },
2026-06-21T23:42:57.9426950Z             {
2026-06-21T23:42:57.9427072Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T23:42:57.9427159Z               "line": 57
2026-06-21T23:42:57.9427236Z             },
2026-06-21T23:42:57.9427331Z             {
2026-06-21T23:42:57.9427455Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T23:42:57.9427546Z               "line": 24
2026-06-21T23:42:57.9427707Z             },
2026-06-21T23:42:57.9427799Z             {
2026-06-21T23:42:57.9427932Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T23:42:57.9428017Z               "line": 142
2026-06-21T23:42:57.9428103Z             },
2026-06-21T23:42:57.9428189Z             {
2026-06-21T23:42:57.9428318Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T23:42:57.9428413Z               "line": 162
2026-06-21T23:42:57.9428500Z             }
2026-06-21T23:42:57.9428584Z           ]
2026-06-21T23:42:57.9428656Z         },
2026-06-21T23:42:57.9428738Z         "int": {
2026-06-21T23:42:57.9428829Z           "complete": true,
2026-06-21T23:42:57.9428923Z           "evidence": [
2026-06-21T23:42:57.9429087Z             {
2026-06-21T23:42:57.9429204Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-21T23:42:57.9429303Z               "line": 67
2026-06-21T23:42:57.9429384Z             },
2026-06-21T23:42:57.9429475Z             {
2026-06-21T23:42:57.9429601Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-21T23:42:57.9429692Z               "line": 93
2026-06-21T23:42:57.9429784Z             },
2026-06-21T23:42:57.9429864Z             {
2026-06-21T23:42:57.9429993Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-21T23:42:57.9430079Z               "line": 117
2026-06-21T23:42:57.9430175Z             },
2026-06-21T23:42:57.9430250Z             {
2026-06-21T23:42:57.9430380Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-21T23:42:57.9430470Z               "line": 134
2026-06-21T23:42:57.9430541Z             }
2026-06-21T23:42:57.9430627Z           ]
2026-06-21T23:42:57.9430713Z         },
2026-06-21T23:42:57.9430799Z         "unit": {
2026-06-21T23:42:57.9430884Z           "complete": true,
2026-06-21T23:42:57.9430980Z           "evidence": [
2026-06-21T23:42:57.9431057Z             {
2026-06-21T23:42:57.9431180Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T23:42:57.9431280Z               "line": 427
2026-06-21T23:42:57.9431362Z             },
2026-06-21T23:42:57.9431447Z             {
2026-06-21T23:42:57.9431566Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T23:42:57.9431658Z               "line": 376
2026-06-21T23:42:57.9431739Z             },
2026-06-21T23:42:57.9431822Z             {
2026-06-21T23:42:57.9431956Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T23:42:57.9432046Z               "line": 412
2026-06-21T23:42:57.9432135Z             },
2026-06-21T23:42:57.9432206Z             {
2026-06-21T23:42:57.9432336Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T23:42:57.9432422Z               "line": 427
2026-06-21T23:42:57.9432502Z             },
2026-06-21T23:42:57.9432588Z             {
2026-06-21T23:42:57.9432712Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T23:42:57.9432807Z               "line": 438
2026-06-21T23:42:57.9432888Z             },
2026-06-21T23:42:57.9432989Z             {
2026-06-21T23:42:57.9433108Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T23:42:57.9433193Z               "line": 449
2026-06-21T23:42:57.9433285Z             },
2026-06-21T23:42:57.9433355Z             {
2026-06-21T23:42:57.9433479Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T23:42:57.9433689Z               "line": 460
2026-06-21T23:42:57.9433770Z             },
2026-06-21T23:42:57.9433862Z             {
2026-06-21T23:42:57.9433990Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T23:42:57.9434080Z               "line": 496
2026-06-21T23:42:57.9434157Z             },
2026-06-21T23:42:57.9434244Z             {
2026-06-21T23:42:57.9434376Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T23:42:57.9434462Z               "line": 519
2026-06-21T23:42:57.9434554Z             },
2026-06-21T23:42:57.9434629Z             {
2026-06-21T23:42:57.9434866Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T23:42:57.9434953Z               "line": 546
2026-06-21T23:42:57.9435042Z             }
2026-06-21T23:42:57.9435133Z           ]
2026-06-21T23:42:57.9435211Z         }
2026-06-21T23:42:57.9435301Z       }
2026-06-21T23:42:57.9435376Z     },
2026-06-21T23:42:57.9435472Z     {
2026-06-21T23:42:57.9435558Z       "id": "REQ-MESH-2",
2026-06-21T23:42:57.9438111Z       "title": "Member roster: node-level union-merge grow-set (per member: pubkey, label, machine_id, last-known address, last-seen — NOT the seed), the discovery directory the mesh dials by. Seeded IN FULL at pairing (seed-holder hands joiner the whole current roster, incl. offline members — folds in deferred pairing-time hostname capture + post-join address seeding); each node authors its own entry stamped with its lease_epoch, merged strictly-greater-wins (the node_label lease); exchanged only over seed-proof'd member connections; forgery-inert (a fake entry names a pubkey that still can't seed-proof). Removal needs a TOMBSTONE — a per-pubkey revoked marker that propagates, dominates the entry, gates admission (seed-proof ∧ ¬tombstoned), and prevents reinsert; cleared by a completed re-pair of that pubkey. Persists through silence (offline member keeps its entry).",
2026-06-21T23:42:57.9438224Z       "requiredStages": [
2026-06-21T23:42:57.9438320Z         "impl",
2026-06-21T23:42:57.9438406Z         "unit",
2026-06-21T23:42:57.9438487Z         "int"
2026-06-21T23:42:57.9438567Z       ],
2026-06-21T23:42:57.9438654Z       "stages": {
2026-06-21T23:42:57.9438735Z         "doc": {
2026-06-21T23:42:57.9438835Z           "complete": false,
2026-06-21T23:42:57.9438930Z           "evidence": []
2026-06-21T23:42:57.9439092Z         },
2026-06-21T23:42:57.9439183Z         "impl": {
2026-06-21T23:42:57.9439284Z           "complete": true,
2026-06-21T23:42:57.9439384Z           "evidence": [
2026-06-21T23:42:57.9439469Z             {
2026-06-21T23:42:57.9439594Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T23:42:57.9439699Z               "line": 807
2026-06-21T23:42:57.9439783Z             },
2026-06-21T23:42:57.9439863Z             {
2026-06-21T23:42:57.9439983Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T23:42:57.9440081Z               "line": 118
2026-06-21T23:42:57.9440162Z             },
2026-06-21T23:42:57.9440252Z             {
2026-06-21T23:42:57.9440373Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T23:42:57.9440453Z               "line": 347
2026-06-21T23:42:57.9440543Z             },
2026-06-21T23:42:57.9440611Z             {
2026-06-21T23:42:57.9440735Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T23:42:57.9440820Z               "line": 389
2026-06-21T23:42:57.9440911Z             },
2026-06-21T23:42:57.9440997Z             {
2026-06-21T23:42:57.9441110Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T23:42:57.9441202Z               "line": 403
2026-06-21T23:42:57.9441292Z             },
2026-06-21T23:42:57.9441387Z             {
2026-06-21T23:42:57.9441502Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T23:42:57.9441598Z               "line": 492
2026-06-21T23:42:57.9441683Z             },
2026-06-21T23:42:57.9441769Z             {
2026-06-21T23:42:57.9441899Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T23:42:57.9442107Z               "line": 507
2026-06-21T23:42:57.9442190Z             },
2026-06-21T23:42:57.9442280Z             {
2026-06-21T23:42:57.9442402Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T23:42:57.9442487Z               "line": 534
2026-06-21T23:42:57.9442559Z             },
2026-06-21T23:42:57.9442648Z             {
2026-06-21T23:42:57.9442761Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T23:42:57.9442848Z               "line": 207
2026-06-21T23:42:57.9442934Z             },
2026-06-21T23:42:57.9443024Z             {
2026-06-21T23:42:57.9443249Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T23:42:57.9443330Z               "line": 755
2026-06-21T23:42:57.9443415Z             },
2026-06-21T23:42:57.9443497Z             {
2026-06-21T23:42:57.9443616Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T23:42:57.9443705Z               "line": 816
2026-06-21T23:42:57.9443788Z             },
2026-06-21T23:42:57.9443883Z             {
2026-06-21T23:42:57.9444002Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T23:42:57.9444092Z               "line": 869
2026-06-21T23:42:57.9444174Z             },
2026-06-21T23:42:57.9444254Z             {
2026-06-21T23:42:57.9444383Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T23:42:57.9444479Z               "line": 891
2026-06-21T23:42:57.9444560Z             },
2026-06-21T23:42:57.9444645Z             {
2026-06-21T23:42:57.9444761Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:42:57.9444842Z               "line": 122
2026-06-21T23:42:57.9444946Z             },
2026-06-21T23:42:57.9445037Z             {
2026-06-21T23:42:57.9445152Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T23:42:57.9445245Z               "line": 44
2026-06-21T23:42:57.9445331Z             },
2026-06-21T23:42:57.9445417Z             {
2026-06-21T23:42:57.9445523Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T23:42:57.9445621Z               "line": 184
2026-06-21T23:42:57.9445708Z             },
2026-06-21T23:42:57.9445790Z             {
2026-06-21T23:42:57.9445898Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T23:42:57.9445984Z               "line": 211
2026-06-21T23:42:57.9446071Z             },
2026-06-21T23:42:57.9446156Z             {
2026-06-21T23:42:57.9446270Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T23:42:57.9446357Z               "line": 251
2026-06-21T23:42:57.9446443Z             },
2026-06-21T23:42:57.9446533Z             {
2026-06-21T23:42:57.9446647Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T23:42:57.9446743Z               "line": 275
2026-06-21T23:42:57.9446823Z             },
2026-06-21T23:42:57.9446919Z             {
2026-06-21T23:42:57.9447034Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T23:42:57.9447123Z               "line": 289
2026-06-21T23:42:57.9447219Z             },
2026-06-21T23:42:57.9447301Z             {
2026-06-21T23:42:57.9447425Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T23:42:57.9447519Z               "line": 300
2026-06-21T23:42:57.9447624Z             },
2026-06-21T23:42:57.9447719Z             {
2026-06-21T23:42:57.9447836Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T23:42:57.9447931Z               "line": 313
2026-06-21T23:42:57.9448013Z             }
2026-06-21T23:42:57.9448098Z           ]
2026-06-21T23:42:57.9448184Z         },
2026-06-21T23:42:57.9448265Z         "int": {
2026-06-21T23:42:57.9453365Z           "complete": true,
2026-06-21T23:42:57.9453504Z           "evidence": [
2026-06-21T23:42:57.9453599Z             {
2026-06-21T23:42:57.9453742Z               "path": "crates/spt-daemon/tests/rosterprop.rs",
2026-06-21T23:42:57.9453842Z               "line": 116
2026-06-21T23:42:57.9453923Z             },
2026-06-21T23:42:57.9454018Z             {
2026-06-21T23:42:57.9454314Z               "path": "crates/spt-daemon/tests/rosterprop.rs",
2026-06-21T23:42:57.9454400Z               "line": 181
2026-06-21T23:42:57.9454490Z             }
2026-06-21T23:42:57.9454581Z           ]
2026-06-21T23:42:57.9454662Z         },
2026-06-21T23:42:57.9454748Z         "unit": {
2026-06-21T23:42:57.9454839Z           "complete": true,
2026-06-21T23:42:57.9454938Z           "evidence": [
2026-06-21T23:42:57.9455025Z             {
2026-06-21T23:42:57.9455153Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T23:42:57.9455243Z               "line": 999
2026-06-21T23:42:57.9455336Z             },
2026-06-21T23:42:57.9455511Z             {
2026-06-21T23:42:57.9455651Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T23:42:57.9455735Z               "line": 1016
2026-06-21T23:42:57.9455820Z             },
2026-06-21T23:42:57.9455900Z             {
2026-06-21T23:42:57.9456030Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T23:42:57.9456149Z               "line": 1024
2026-06-21T23:42:57.9456239Z             },
2026-06-21T23:42:57.9456321Z             {
2026-06-21T23:42:57.9456449Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T23:42:57.9456539Z               "line": 1048
2026-06-21T23:42:57.9456631Z             },
2026-06-21T23:42:57.9456697Z             {
2026-06-21T23:42:57.9456835Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T23:42:57.9456931Z               "line": 1499
2026-06-21T23:42:57.9457012Z             },
2026-06-21T23:42:57.9457103Z             {
2026-06-21T23:42:57.9457217Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T23:42:57.9457318Z               "line": 347
2026-06-21T23:42:57.9457393Z             },
2026-06-21T23:42:57.9457474Z             {
2026-06-21T23:42:57.9457599Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T23:42:57.9457698Z               "line": 370
2026-06-21T23:42:57.9457784Z             },
2026-06-21T23:42:57.9457871Z             {
2026-06-21T23:42:57.9457980Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T23:42:57.9458055Z               "line": 407
2026-06-21T23:42:57.9458145Z             },
2026-06-21T23:42:57.9458231Z             {
2026-06-21T23:42:57.9458330Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T23:42:57.9458434Z               "line": 431
2026-06-21T23:42:57.9458515Z             },
2026-06-21T23:42:57.9458597Z             {
2026-06-21T23:42:57.9458706Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T23:42:57.9458786Z               "line": 483
2026-06-21T23:42:57.9458878Z             },
2026-06-21T23:42:57.9459058Z             {
2026-06-21T23:42:57.9459169Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T23:42:57.9459249Z               "line": 499
2026-06-21T23:42:57.9459349Z             },
2026-06-21T23:42:57.9459440Z             {
2026-06-21T23:42:57.9459555Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T23:42:57.9459646Z               "line": 514
2026-06-21T23:42:57.9459731Z             },
2026-06-21T23:42:57.9459822Z             {
2026-06-21T23:42:57.9459931Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T23:42:57.9460022Z               "line": 531
2026-06-21T23:42:57.9460109Z             }
2026-06-21T23:42:57.9460190Z           ]
2026-06-21T23:42:57.9460279Z         }
2026-06-21T23:42:57.9460360Z       }
2026-06-21T23:42:57.9460457Z     },
2026-06-21T23:42:57.9460532Z     {
2026-06-21T23:42:57.9460618Z       "id": "REQ-MESH-3",
2026-06-21T23:42:57.9462360Z       "title": "Mesh row fan-out: registry rows stay OWN-AUTHORED; the only change is the push target widens from directly-paired peers to ALL roster members (a wider DIRECT fan-out, never a third-party relay). Every row/message still arrives from its author over a handshake → KNOWN-HAZARDS 7.5 (origin = handshake node) and 4.10 (eviction lease: any future update comes from that node itself, alive) PRESERVED VERBATIM. Closes the staggered A→B→C repro: C (roster-seeded with A at pairing) initiates to A, seed-proof admits C unpaired, A learns C, both push directly.",
2026-06-21T23:42:57.9462574Z       "requiredStages": [
2026-06-21T23:42:57.9462670Z         "impl",
2026-06-21T23:42:57.9462742Z         "unit",
2026-06-21T23:42:57.9462831Z         "int"
2026-06-21T23:42:57.9462923Z       ],
2026-06-21T23:42:57.9463005Z       "stages": {
2026-06-21T23:42:57.9463094Z         "doc": {
2026-06-21T23:42:57.9463180Z           "complete": false,
2026-06-21T23:42:57.9463271Z           "evidence": []
2026-06-21T23:42:57.9463358Z         },
2026-06-21T23:42:57.9463447Z         "impl": {
2026-06-21T23:42:57.9463641Z           "complete": true,
2026-06-21T23:42:57.9463731Z           "evidence": [
2026-06-21T23:42:57.9463816Z             {
2026-06-21T23:42:57.9463944Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T23:42:57.9464036Z               "line": 641
2026-06-21T23:42:57.9464121Z             }
2026-06-21T23:42:57.9464220Z           ]
2026-06-21T23:42:57.9464303Z         },
2026-06-21T23:42:57.9464388Z         "int": {
2026-06-21T23:42:57.9464488Z           "complete": true,
2026-06-21T23:42:57.9464569Z           "evidence": [
2026-06-21T23:42:57.9464660Z             {
2026-06-21T23:42:57.9464774Z               "path": "crates/spt-daemon/tests/mesh.rs",
2026-06-21T23:42:57.9464869Z               "line": 373
2026-06-21T23:42:57.9464951Z             },
2026-06-21T23:42:57.9465036Z             {
2026-06-21T23:42:57.9465155Z               "path": "crates/spt-daemon/tests/mesh.rs",
2026-06-21T23:42:57.9465242Z               "line": 436
2026-06-21T23:42:57.9465322Z             }
2026-06-21T23:42:57.9465413Z           ]
2026-06-21T23:42:57.9465498Z         },
2026-06-21T23:42:57.9465586Z         "unit": {
2026-06-21T23:42:57.9465675Z           "complete": true,
2026-06-21T23:42:57.9465761Z           "evidence": [
2026-06-21T23:42:57.9465838Z             {
2026-06-21T23:42:57.9465957Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T23:42:57.9466047Z               "line": 910
2026-06-21T23:42:57.9466133Z             }
2026-06-21T23:42:57.9466216Z           ]
2026-06-21T23:42:57.9466300Z         }
2026-06-21T23:42:57.9466403Z       }
2026-06-21T23:42:57.9466494Z     },
2026-06-21T23:42:57.9466581Z     {
2026-06-21T23:42:57.9466671Z       "id": "REQ-MESH-4",
2026-06-21T23:42:57.9469094Z       "title": "Revoke + timeboxed seed rotation + re-seed grace: `spt subnet revoke <node>...` (list, elevation-gated, revoke-only) writes roster tombstones immediately, then schedules ONE seed rotation (re-mint seed, bump seed_epoch, push new seed CONFIDENTIALLY over member-auth'd TLS connections — never in roster/registry gossip — force-drop revokees) at the close of a coalescing window (default 1h); further revokes in the window join the same rotation (one epoch bump). `--force-rotate-seed` rotates immediately (compromised-node path). RE-SEED GRACE: a node proving the immediately-prior epoch (N-1) AND still on the roster gets a re-seed-only restricted connection (auto-heals a benign offliner); revoked/off-roster denied; ≥2 stale → re-pair.",
2026-06-21T23:42:57.9469205Z       "requiredStages": [
2026-06-21T23:42:57.9469308Z         "impl",
2026-06-21T23:42:57.9469390Z         "unit",
2026-06-21T23:42:57.9469486Z         "int"
2026-06-21T23:42:57.9469567Z       ],
2026-06-21T23:42:57.9469657Z       "stages": {
2026-06-21T23:42:57.9469739Z         "doc": {
2026-06-21T23:42:57.9469838Z           "complete": false,
2026-06-21T23:42:57.9469928Z           "evidence": []
2026-06-21T23:42:57.9470015Z         },
2026-06-21T23:42:57.9470106Z         "impl": {
2026-06-21T23:42:57.9470192Z           "complete": true,
2026-06-21T23:42:57.9470315Z           "evidence": [
2026-06-21T23:42:57.9470387Z             {
2026-06-21T23:42:57.9470521Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T23:42:57.9470606Z               "line": 33
2026-06-21T23:42:57.9470688Z             },
2026-06-21T23:42:57.9470773Z             {
2026-06-21T23:42:57.9471007Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T23:42:57.9471093Z               "line": 68
2026-06-21T23:42:57.9471178Z             },
2026-06-21T23:42:57.9471264Z             {
2026-06-21T23:42:57.9471389Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T23:42:57.9471482Z               "line": 111
2026-06-21T23:42:57.9471568Z             },
2026-06-21T23:42:57.9471644Z             {
2026-06-21T23:42:57.9471767Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T23:42:57.9471851Z               "line": 462
2026-06-21T23:42:57.9471938Z             },
2026-06-21T23:42:57.9472147Z             {
2026-06-21T23:42:57.9472262Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T23:42:57.9472353Z               "line": 711
2026-06-21T23:42:57.9472439Z             },
2026-06-21T23:42:57.9472524Z             {
2026-06-21T23:42:57.9472640Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T23:42:57.9472730Z               "line": 725
2026-06-21T23:42:57.9472814Z             },
2026-06-21T23:42:57.9472887Z             {
2026-06-21T23:42:57.9473001Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:42:57.9473082Z               "line": 132
2026-06-21T23:42:57.9473168Z             },
2026-06-21T23:42:57.9473250Z             {
2026-06-21T23:42:57.9473377Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T23:42:57.9473463Z               "line": 26
2026-06-21T23:42:57.9473550Z             },
2026-06-21T23:42:57.9473640Z             {
2026-06-21T23:42:57.9473754Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T23:42:57.9473860Z               "line": 97
2026-06-21T23:42:57.9473937Z             },
2026-06-21T23:42:57.9474021Z             {
2026-06-21T23:42:57.9474134Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T23:42:57.9474221Z               "line": 119
2026-06-21T23:42:57.9474300Z             },
2026-06-21T23:42:57.9474390Z             {
2026-06-21T23:42:57.9474509Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T23:42:57.9474591Z               "line": 82
2026-06-21T23:42:57.9474671Z             },
2026-06-21T23:42:57.9474757Z             {
2026-06-21T23:42:57.9474858Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T23:42:57.9474943Z               "line": 111
2026-06-21T23:42:57.9475024Z             },
2026-06-21T23:42:57.9475114Z             {
2026-06-21T23:42:57.9475220Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T23:42:57.9475306Z               "line": 232
2026-06-21T23:42:57.9475396Z             },
2026-06-21T23:42:57.9475468Z             {
2026-06-21T23:42:57.9475587Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T23:42:57.9475682Z               "line": 245
2026-06-21T23:42:57.9475768Z             },
2026-06-21T23:42:57.9475854Z             {
2026-06-21T23:42:57.9475973Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9476073Z               "line": 4665
2026-06-21T23:42:57.9476160Z             }
2026-06-21T23:42:57.9476249Z           ]
2026-06-21T23:42:57.9476330Z         },
2026-06-21T23:42:57.9476422Z         "int": {
2026-06-21T23:42:57.9476512Z           "complete": true,
2026-06-21T23:42:57.9476616Z           "evidence": [
2026-06-21T23:42:57.9476703Z             {
2026-06-21T23:42:57.9476818Z               "path": "crates/spt-daemon/tests/reseed.rs",
2026-06-21T23:42:57.9476902Z               "line": 98
2026-06-21T23:42:57.9476987Z             },
2026-06-21T23:42:57.9477068Z             {
2026-06-21T23:42:57.9477184Z               "path": "crates/spt-daemon/tests/reseed.rs",
2026-06-21T23:42:57.9477297Z               "line": 140
2026-06-21T23:42:57.9477383Z             }
2026-06-21T23:42:57.9477470Z           ]
2026-06-21T23:42:57.9477555Z         },
2026-06-21T23:42:57.9477640Z         "unit": {
2026-06-21T23:42:57.9477737Z           "complete": true,
2026-06-21T23:42:57.9477813Z           "evidence": [
2026-06-21T23:42:57.9477974Z             {
2026-06-21T23:42:57.9478099Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T23:42:57.9478180Z               "line": 178
2026-06-21T23:42:57.9478265Z             },
2026-06-21T23:42:57.9478342Z             {
2026-06-21T23:42:57.9478471Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T23:42:57.9478561Z               "line": 242
2026-06-21T23:42:57.9478643Z             },
2026-06-21T23:42:57.9478734Z             {
2026-06-21T23:42:57.9478851Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T23:42:57.9479034Z               "line": 1079
2026-06-21T23:42:57.9479228Z             },
2026-06-21T23:42:57.9479328Z             {
2026-06-21T23:42:57.9479450Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T23:42:57.9479535Z               "line": 1109
2026-06-21T23:42:57.9479621Z             },
2026-06-21T23:42:57.9479708Z             {
2026-06-21T23:42:57.9479835Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-21T23:42:57.9479931Z               "line": 1129
2026-06-21T23:42:57.9480013Z             },
2026-06-21T23:42:57.9480098Z             {
2026-06-21T23:42:57.9480226Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-21T23:42:57.9480318Z               "line": 602
2026-06-21T23:42:57.9480398Z             },
2026-06-21T23:42:57.9480484Z             {
2026-06-21T23:42:57.9480604Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T23:42:57.9480695Z               "line": 148
2026-06-21T23:42:57.9480775Z             },
2026-06-21T23:42:57.9480861Z             {
2026-06-21T23:42:57.9480986Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T23:42:57.9481076Z               "line": 169
2026-06-21T23:42:57.9481161Z             },
2026-06-21T23:42:57.9481244Z             {
2026-06-21T23:42:57.9481366Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T23:42:57.9481452Z               "line": 181
2026-06-21T23:42:57.9481544Z             },
2026-06-21T23:42:57.9481625Z             {
2026-06-21T23:42:57.9481743Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-21T23:42:57.9481834Z               "line": 202
2026-06-21T23:42:57.9481916Z             },
2026-06-21T23:42:57.9482010Z             {
2026-06-21T23:42:57.9482128Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T23:42:57.9482214Z               "line": 375
2026-06-21T23:42:57.9482308Z             },
2026-06-21T23:42:57.9482393Z             {
2026-06-21T23:42:57.9482512Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T23:42:57.9482603Z               "line": 407
2026-06-21T23:42:57.9482693Z             },
2026-06-21T23:42:57.9482784Z             {
2026-06-21T23:42:57.9482875Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9482966Z               "line": 10052
2026-06-21T23:42:57.9483050Z             }
2026-06-21T23:42:57.9483137Z           ]
2026-06-21T23:42:57.9483219Z         }
2026-06-21T23:42:57.9483295Z       }
2026-06-21T23:42:57.9483374Z     },
2026-06-21T23:42:57.9483461Z     {
2026-06-21T23:42:57.9483552Z       "id": "REQ-MESH-5",
2026-06-21T23:42:57.9484950Z       "title": "Hard cutover from pairwise trust: delete peers.json + the is_trusted authorization path (no migration — expendable test fleet, re-pairs fresh under the new model, user decision 2026-06-08). Warn-on-change DEMOTED from a gate to an awareness notice anchored on machine_id (not label): 'machine M, last seen as K1, now presents K2' — fires the same event as the REQ-SUBNET-7 re-pair overwrite. The TrustStore/peers.json code and its call sites are removed, not left dead.",
2026-06-21T23:42:57.9485060Z       "requiredStages": [
2026-06-21T23:42:57.9485151Z         "impl",
2026-06-21T23:42:57.9485232Z         "unit"
2026-06-21T23:42:57.9485322Z       ],
2026-06-21T23:42:57.9485408Z       "stages": {
2026-06-21T23:42:57.9485489Z         "doc": {
2026-06-21T23:42:57.9485588Z           "complete": false,
2026-06-21T23:42:57.9485780Z           "evidence": []
2026-06-21T23:42:57.9485861Z         },
2026-06-21T23:42:57.9485946Z         "impl": {
2026-06-21T23:42:57.9486038Z           "complete": true,
2026-06-21T23:42:57.9486118Z           "evidence": [
2026-06-21T23:42:57.9486200Z             {
2026-06-21T23:42:57.9486333Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T23:42:57.9486410Z               "line": 61
2026-06-21T23:42:57.9486495Z             },
2026-06-21T23:42:57.9486571Z             {
2026-06-21T23:42:57.9486696Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T23:42:57.9486781Z               "line": 109
2026-06-21T23:42:57.9486943Z             },
2026-06-21T23:42:57.9487031Z             {
2026-06-21T23:42:57.9487152Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T23:42:57.9487244Z               "line": 104
2026-06-21T23:42:57.9487331Z             },
2026-06-21T23:42:57.9487425Z             {
2026-06-21T23:42:57.9487543Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T23:42:57.9487643Z               "line": 105
2026-06-21T23:42:57.9487725Z             },
2026-06-21T23:42:57.9487805Z             {
2026-06-21T23:42:57.9487939Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:42:57.9488020Z               "line": 85
2026-06-21T23:42:57.9488101Z             },
2026-06-21T23:42:57.9488187Z             {
2026-06-21T23:42:57.9488316Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:42:57.9488407Z               "line": 250
2026-06-21T23:42:57.9488492Z             },
2026-06-21T23:42:57.9488578Z             {
2026-06-21T23:42:57.9488697Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:42:57.9488787Z               "line": 314
2026-06-21T23:42:57.9488868Z             },
2026-06-21T23:42:57.9489045Z             {
2026-06-21T23:42:57.9489173Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:42:57.9489261Z               "line": 767
2026-06-21T23:42:57.9489369Z             },
2026-06-21T23:42:57.9489445Z             {
2026-06-21T23:42:57.9489576Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T23:42:57.9489661Z               "line": 101
2026-06-21T23:42:57.9489736Z             },
2026-06-21T23:42:57.9489826Z             {
2026-06-21T23:42:57.9489935Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T23:42:57.9490024Z               "line": 193
2026-06-21T23:42:57.9490100Z             }
2026-06-21T23:42:57.9490191Z           ]
2026-06-21T23:42:57.9490278Z         },
2026-06-21T23:42:57.9490377Z         "int": {
2026-06-21T23:42:57.9490472Z           "complete": false,
2026-06-21T23:42:57.9490568Z           "evidence": []
2026-06-21T23:42:57.9490658Z         },
2026-06-21T23:42:57.9490743Z         "unit": {
2026-06-21T23:42:57.9490840Z           "complete": true,
2026-06-21T23:42:57.9490940Z           "evidence": [
2026-06-21T23:42:57.9491020Z             {
2026-06-21T23:42:57.9491145Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:42:57.9491226Z               "line": 1009
2026-06-21T23:42:57.9491321Z             },
2026-06-21T23:42:57.9491401Z             {
2026-06-21T23:42:57.9491517Z               "path": "crates/spt-store/src/roster.rs",
2026-06-21T23:42:57.9491602Z               "line": 462
2026-06-21T23:42:57.9491688Z             }
2026-06-21T23:42:57.9491769Z           ]
2026-06-21T23:42:57.9491856Z         }
2026-06-21T23:42:57.9491941Z       }
2026-06-21T23:42:57.9492022Z     },
2026-06-21T23:42:57.9492104Z     {
2026-06-21T23:42:57.9492180Z       "id": "REQ-MESH-6",
2026-06-21T23:42:57.9493421Z       "title": "Concurrent liveness probes: `spt subnet status --nodes` fans out its offline/serve-probes (REQ-SUBNET-5) CONCURRENTLY — total wall-time bounded by the single-probe ceiling (~3s), never k×ceiling. The mesh makes a node see ALL members (many possibly offline), so a serial probe loop would be offline_count×3s. (Planning verifies the current REQ-SUBNET-5 probe loop's behavior and fixes it if serial.)",
2026-06-21T23:42:57.9493634Z       "requiredStages": [
2026-06-21T23:42:57.9493722Z         "impl",
2026-06-21T23:42:57.9493812Z         "unit"
2026-06-21T23:42:57.9493893Z       ],
2026-06-21T23:42:57.9493968Z       "stages": {
2026-06-21T23:42:57.9494060Z         "doc": {
2026-06-21T23:42:57.9494145Z           "complete": false,
2026-06-21T23:42:57.9494236Z           "evidence": []
2026-06-21T23:42:57.9494307Z         },
2026-06-21T23:42:57.9494399Z         "impl": {
2026-06-21T23:42:57.9494488Z           "complete": true,
2026-06-21T23:42:57.9494578Z           "evidence": [
2026-06-21T23:42:57.9494666Z             {
2026-06-21T23:42:57.9494880Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9494966Z               "line": 4181
2026-06-21T23:42:57.9495048Z             }
2026-06-21T23:42:57.9495137Z           ]
2026-06-21T23:42:57.9495227Z         },
2026-06-21T23:42:57.9495308Z         "int": {
2026-06-21T23:42:57.9495403Z           "complete": false,
2026-06-21T23:42:57.9495486Z           "evidence": []
2026-06-21T23:42:57.9495577Z         },
2026-06-21T23:42:57.9495663Z         "unit": {
2026-06-21T23:42:57.9495760Z           "complete": true,
2026-06-21T23:42:57.9495853Z           "evidence": [
2026-06-21T23:42:57.9495939Z             {
2026-06-21T23:42:57.9496045Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9496135Z               "line": 10602
2026-06-21T23:42:57.9496225Z             },
2026-06-21T23:42:57.9496312Z             {
2026-06-21T23:42:57.9496422Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9496511Z               "line": 10629
2026-06-21T23:42:57.9496598Z             },
2026-06-21T23:42:57.9496688Z             {
2026-06-21T23:42:57.9496788Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9496883Z               "line": 10653
2026-06-21T23:42:57.9496956Z             }
2026-06-21T23:42:57.9497050Z           ]
2026-06-21T23:42:57.9497141Z         }
2026-06-21T23:42:57.9497223Z       }
2026-06-21T23:42:57.9497314Z     },
2026-06-21T23:42:57.9497388Z     {
2026-06-21T23:42:57.9497489Z       "id": "REQ-MIGRATE-1",
2026-06-21T23:42:57.9497652Z       "title": "Auto-detect and migrate a legacy claude_skill_owl install",
2026-06-21T23:42:57.9497756Z       "requiredStages": [],
2026-06-21T23:42:57.9497853Z       "stages": {
2026-06-21T23:42:57.9497943Z         "doc": {
2026-06-21T23:42:57.9498036Z           "complete": false,
2026-06-21T23:42:57.9498122Z           "evidence": []
2026-06-21T23:42:57.9498208Z         },
2026-06-21T23:42:57.9498295Z         "impl": {
2026-06-21T23:42:57.9498394Z           "complete": false,
2026-06-21T23:42:57.9498489Z           "evidence": []
2026-06-21T23:42:57.9498571Z         },
2026-06-21T23:42:57.9498657Z         "int": {
2026-06-21T23:42:57.9498742Z           "complete": false,
2026-06-21T23:42:57.9498828Z           "evidence": []
2026-06-21T23:42:57.9498909Z         },
2026-06-21T23:42:57.9499094Z         "unit": {
2026-06-21T23:42:57.9499196Z           "complete": false,
2026-06-21T23:42:57.9499281Z           "evidence": []
2026-06-21T23:42:57.9499376Z         }
2026-06-21T23:42:57.9499458Z       }
2026-06-21T23:42:57.9499544Z     },
2026-06-21T23:42:57.9499619Z     {
2026-06-21T23:42:57.9499715Z       "id": "REQ-MSG-1",
2026-06-21T23:42:57.9500141Z       "title": "Local message delivery: TCP-first to a registered address, spool fallback when offline; id->address via registry (stale-clean first); reply routing (__REPLY_TO__)",
2026-06-21T23:42:57.9500234Z       "requiredStages": [
2026-06-21T23:42:57.9500315Z         "impl",
2026-06-21T23:42:57.9500400Z         "unit",
2026-06-21T23:42:57.9500482Z         "int"
2026-06-21T23:42:57.9500566Z       ],
2026-06-21T23:42:57.9500651Z       "stages": {
2026-06-21T23:42:57.9500736Z         "doc": {
2026-06-21T23:42:57.9500823Z           "complete": false,
2026-06-21T23:42:57.9500908Z           "evidence": []
2026-06-21T23:42:57.9500989Z         },
2026-06-21T23:42:57.9501075Z         "impl": {
2026-06-21T23:42:57.9501290Z           "complete": true,
2026-06-21T23:42:57.9501385Z           "evidence": [
2026-06-21T23:42:57.9501462Z             {
2026-06-21T23:42:57.9501571Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T23:42:57.9501666Z               "line": 28
2026-06-21T23:42:57.9501758Z             },
2026-06-21T23:42:57.9501848Z             {
2026-06-21T23:42:57.9501962Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T23:42:57.9502049Z               "line": 94
2026-06-21T23:42:57.9502143Z             },
2026-06-21T23:42:57.9502219Z             {
2026-06-21T23:42:57.9502339Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T23:42:57.9502520Z               "line": 127
2026-06-21T23:42:57.9502605Z             },
2026-06-21T23:42:57.9502693Z             {
2026-06-21T23:42:57.9502801Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T23:42:57.9502892Z               "line": 149
2026-06-21T23:42:57.9502974Z             },
2026-06-21T23:42:57.9503065Z             {
2026-06-21T23:42:57.9503182Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T23:42:57.9503272Z               "line": 174
2026-06-21T23:42:57.9503358Z             },
2026-06-21T23:42:57.9503438Z             {
2026-06-21T23:42:57.9503560Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T23:42:57.9503657Z               "line": 18
2026-06-21T23:42:57.9503747Z             },
2026-06-21T23:42:57.9503833Z             {
2026-06-21T23:42:57.9503947Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T23:42:57.9504029Z               "line": 13
2026-06-21T23:42:57.9504114Z             },
2026-06-21T23:42:57.9504209Z             {
2026-06-21T23:42:57.9504320Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T23:42:57.9504405Z               "line": 62
2026-06-21T23:42:57.9504490Z             },
2026-06-21T23:42:57.9504586Z             {
2026-06-21T23:42:57.9504691Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T23:42:57.9504782Z               "line": 13
2026-06-21T23:42:57.9504877Z             }
2026-06-21T23:42:57.9504964Z           ]
2026-06-21T23:42:57.9505049Z         },
2026-06-21T23:42:57.9505134Z         "int": {
2026-06-21T23:42:57.9505231Z           "complete": true,
2026-06-21T23:42:57.9505317Z           "evidence": [
2026-06-21T23:42:57.9505401Z             {
2026-06-21T23:42:57.9505546Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-21T23:42:57.9505631Z               "line": 9
2026-06-21T23:42:57.9505716Z             },
2026-06-21T23:42:57.9505787Z             {
2026-06-21T23:42:57.9505925Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-21T23:42:57.9506023Z               "line": 56
2026-06-21T23:42:57.9506103Z             },
2026-06-21T23:42:57.9506195Z             {
2026-06-21T23:42:57.9506324Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-21T23:42:57.9506418Z               "line": 113
2026-06-21T23:42:57.9506504Z             }
2026-06-21T23:42:57.9506596Z           ]
2026-06-21T23:42:57.9506691Z         },
2026-06-21T23:42:57.9506781Z         "unit": {
2026-06-21T23:42:57.9506882Z           "complete": true,
2026-06-21T23:42:57.9506967Z           "evidence": [
2026-06-21T23:42:57.9507057Z             {
2026-06-21T23:42:57.9507172Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T23:42:57.9507263Z               "line": 203
2026-06-21T23:42:57.9507358Z             },
2026-06-21T23:42:57.9507429Z             {
2026-06-21T23:42:57.9507554Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T23:42:57.9507644Z               "line": 232
2026-06-21T23:42:57.9507730Z             },
2026-06-21T23:42:57.9507816Z             {
2026-06-21T23:42:57.9507920Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T23:42:57.9508011Z               "line": 277
2026-06-21T23:42:57.9508098Z             },
2026-06-21T23:42:57.9508184Z             {
2026-06-21T23:42:57.9508292Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T23:42:57.9508470Z               "line": 300
2026-06-21T23:42:57.9508555Z             },
2026-06-21T23:42:57.9508639Z             {
2026-06-21T23:42:57.9508754Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-21T23:42:57.9508840Z               "line": 325
2026-06-21T23:42:57.9508930Z             },
2026-06-21T23:42:57.9509102Z             {
2026-06-21T23:42:57.9509217Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T23:42:57.9509302Z               "line": 204
2026-06-21T23:42:57.9509389Z             },
2026-06-21T23:42:57.9509479Z             {
2026-06-21T23:42:57.9509583Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T23:42:57.9509785Z               "line": 237
2026-06-21T23:42:57.9509860Z             },
2026-06-21T23:42:57.9509945Z             {
2026-06-21T23:42:57.9510056Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T23:42:57.9510141Z               "line": 251
2026-06-21T23:42:57.9510227Z             },
2026-06-21T23:42:57.9510313Z             {
2026-06-21T23:42:57.9510433Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T23:42:57.9510522Z               "line": 263
2026-06-21T23:42:57.9510604Z             },
2026-06-21T23:42:57.9510691Z             {
2026-06-21T23:42:57.9510808Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T23:42:57.9510889Z               "line": 162
2026-06-21T23:42:57.9510970Z             },
2026-06-21T23:42:57.9511056Z             {
2026-06-21T23:42:57.9511168Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-21T23:42:57.9511263Z               "line": 242
2026-06-21T23:42:57.9511340Z             },
2026-06-21T23:42:57.9511431Z             {
2026-06-21T23:42:57.9511554Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T23:42:57.9511640Z               "line": 134
2026-06-21T23:42:57.9511727Z             },
2026-06-21T23:42:57.9511807Z             {
2026-06-21T23:42:57.9511936Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T23:42:57.9512027Z               "line": 153
2026-06-21T23:42:57.9512107Z             }
2026-06-21T23:42:57.9512193Z           ]
2026-06-21T23:42:57.9512275Z         }
2026-06-21T23:42:57.9512365Z       }
2026-06-21T23:42:57.9512450Z     },
2026-06-21T23:42:57.9512541Z     {
2026-06-21T23:42:57.9512628Z       "id": "REQ-MSG-2",
2026-06-21T23:42:57.9512900Z       "title": "spt binary CLI surface: send/ring/ready(+--once)/list/stop/whoami, stable arg shapes + exit codes",
2026-06-21T23:42:57.9513004Z       "requiredStages": [
2026-06-21T23:42:57.9513089Z         "impl",
2026-06-21T23:42:57.9513180Z         "unit"
2026-06-21T23:42:57.9513258Z       ],
2026-06-21T23:42:57.9513352Z       "stages": {
2026-06-21T23:42:57.9513433Z         "doc": {
2026-06-21T23:42:57.9513539Z           "complete": false,
2026-06-21T23:42:57.9513634Z           "evidence": []
2026-06-21T23:42:57.9513723Z         },
2026-06-21T23:42:57.9513813Z         "impl": {
2026-06-21T23:42:57.9513899Z           "complete": true,
2026-06-21T23:42:57.9514002Z           "evidence": [
2026-06-21T23:42:57.9514074Z             {
2026-06-21T23:42:57.9514183Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9514270Z               "line": 11
2026-06-21T23:42:57.9514355Z             },
2026-06-21T23:42:57.9514440Z             {
2026-06-21T23:42:57.9514537Z               "path": "crates/spt/src/main.rs",
2026-06-21T23:42:57.9514632Z               "line": 8
2026-06-21T23:42:57.9514717Z             }
2026-06-21T23:42:57.9514798Z           ]
2026-06-21T23:42:57.9514889Z         },
2026-06-21T23:42:57.9514970Z         "int": {
2026-06-21T23:42:57.9515069Z           "complete": false,
2026-06-21T23:42:57.9515156Z           "evidence": []
2026-06-21T23:42:57.9515251Z         },
2026-06-21T23:42:57.9515332Z         "unit": {
2026-06-21T23:42:57.9515427Z           "complete": true,
2026-06-21T23:42:57.9515528Z           "evidence": [
2026-06-21T23:42:57.9515609Z             {
2026-06-21T23:42:57.9515723Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9515919Z               "line": 7717
2026-06-21T23:42:57.9516005Z             },
2026-06-21T23:42:57.9516091Z             {
2026-06-21T23:42:57.9516201Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9516295Z               "line": 7759
2026-06-21T23:42:57.9516380Z             },
2026-06-21T23:42:57.9516471Z             {
2026-06-21T23:42:57.9516574Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9516663Z               "line": 7808
2026-06-21T23:42:57.9516755Z             },
2026-06-21T23:42:57.9516837Z             {
2026-06-21T23:42:57.9516950Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9517040Z               "line": 7831
2026-06-21T23:42:57.9517203Z             },
2026-06-21T23:42:57.9517288Z             {
2026-06-21T23:42:57.9517399Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9517489Z               "line": 9807
2026-06-21T23:42:57.9517570Z             },
2026-06-21T23:42:57.9517655Z             {
2026-06-21T23:42:57.9517752Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9517846Z               "line": 9816
2026-06-21T23:42:57.9517927Z             },
2026-06-21T23:42:57.9518004Z             {
2026-06-21T23:42:57.9518100Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9518185Z               "line": 9830
2026-06-21T23:42:57.9518275Z             }
2026-06-21T23:42:57.9518358Z           ]
2026-06-21T23:42:57.9518443Z         }
2026-06-21T23:42:57.9518528Z       }
2026-06-21T23:42:57.9518619Z     },
2026-06-21T23:42:57.9518706Z     {
2026-06-21T23:42:57.9518791Z       "id": "REQ-MSG-3",
2026-06-21T23:42:57.9519247Z       "title": "Ready-agent lifecycle: register perch (info.json + listener + registry address) on ready, drain spooled backlog on startup, clean teardown",
2026-06-21T23:42:57.9519352Z       "requiredStages": [
2026-06-21T23:42:57.9519467Z         "impl",
2026-06-21T23:42:57.9519562Z         "unit",
2026-06-21T23:42:57.9519653Z         "int"
2026-06-21T23:42:57.9519743Z       ],
2026-06-21T23:42:57.9519857Z       "stages": {
2026-06-21T23:42:57.9519944Z         "doc": {
2026-06-21T23:42:57.9520035Z           "complete": false,
2026-06-21T23:42:57.9520116Z           "evidence": []
2026-06-21T23:42:57.9520200Z         },
2026-06-21T23:42:57.9520283Z         "impl": {
2026-06-21T23:42:57.9520382Z           "complete": true,
2026-06-21T23:42:57.9520468Z           "evidence": [
2026-06-21T23:42:57.9520554Z             {
2026-06-21T23:42:57.9520660Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-21T23:42:57.9520754Z               "line": 19
2026-06-21T23:42:57.9520835Z             },
2026-06-21T23:42:57.9520922Z             {
2026-06-21T23:42:57.9521040Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T23:42:57.9521126Z               "line": 21
2026-06-21T23:42:57.9521212Z             },
2026-06-21T23:42:57.9521290Z             {
2026-06-21T23:42:57.9521402Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T23:42:57.9521482Z               "line": 48
2026-06-21T23:42:57.9521578Z             },
2026-06-21T23:42:57.9521663Z             {
2026-06-21T23:42:57.9521762Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T23:42:57.9521862Z               "line": 174
2026-06-21T23:42:57.9521943Z             }
2026-06-21T23:42:57.9522033Z           ]
2026-06-21T23:42:57.9522114Z         },
2026-06-21T23:42:57.9522210Z         "int": {
2026-06-21T23:42:57.9522310Z           "complete": true,
2026-06-21T23:42:57.9522395Z           "evidence": [
2026-06-21T23:42:57.9522486Z             {
2026-06-21T23:42:57.9522625Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-21T23:42:57.9522719Z               "line": 10
2026-06-21T23:42:57.9522811Z             },
2026-06-21T23:42:57.9522897Z             {
2026-06-21T23:42:57.9523025Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-21T23:42:57.9523106Z               "line": 56
2026-06-21T23:42:57.9527045Z             }
2026-06-21T23:42:57.9527157Z           ]
2026-06-21T23:42:57.9527392Z         },
2026-06-21T23:42:57.9527477Z         "unit": {
2026-06-21T23:42:57.9527581Z           "complete": true,
2026-06-21T23:42:57.9527678Z           "evidence": [
2026-06-21T23:42:57.9527763Z             {
2026-06-21T23:42:57.9527896Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T23:42:57.9527978Z               "line": 228
2026-06-21T23:42:57.9528073Z             },
2026-06-21T23:42:57.9528158Z             {
2026-06-21T23:42:57.9528269Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T23:42:57.9528369Z               "line": 247
2026-06-21T23:42:57.9528455Z             },
2026-06-21T23:42:57.9528641Z             {
2026-06-21T23:42:57.9528755Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T23:42:57.9528850Z               "line": 270
2026-06-21T23:42:57.9528928Z             }
2026-06-21T23:42:57.9529127Z           ]
2026-06-21T23:42:57.9529213Z         }
2026-06-21T23:42:57.9529295Z       }
2026-06-21T23:42:57.9529389Z     },
2026-06-21T23:42:57.9529479Z     {
2026-06-21T23:42:57.9529576Z       "id": "REQ-MSG-4",
2026-06-21T23:42:57.9530479Z       "title": "Listener stream stdout emits EVENT envelope lines (sister-format, ADR-0001): parse the __REPLY_TO__ frame, pass pre-formed typed envelopes through verbatim (no double-wrap), compose <EVENT type=\"msg\" from=…> otherwise, chunk oversized lines into EVENT-PART",
2026-06-21T23:42:57.9530590Z       "requiredStages": [
2026-06-21T23:42:57.9530681Z         "impl",
2026-06-21T23:42:57.9530765Z         "unit",
2026-06-21T23:42:57.9530848Z         "int"
2026-06-21T23:42:57.9530933Z       ],
2026-06-21T23:42:57.9531019Z       "stages": {
2026-06-21T23:42:57.9531119Z         "doc": {
2026-06-21T23:42:57.9531215Z           "complete": false,
2026-06-21T23:42:57.9531309Z           "evidence": []
2026-06-21T23:42:57.9531390Z         },
2026-06-21T23:42:57.9531482Z         "impl": {
2026-06-21T23:42:57.9531573Z           "complete": true,
2026-06-21T23:42:57.9531667Z           "evidence": [
2026-06-21T23:42:57.9531758Z             {
2026-06-21T23:42:57.9531873Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T23:42:57.9531962Z               "line": 19
2026-06-21T23:42:57.9532047Z             },
2026-06-21T23:42:57.9532133Z             {
2026-06-21T23:42:57.9532242Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T23:42:57.9532326Z               "line": 46
2026-06-21T23:42:57.9532417Z             },
2026-06-21T23:42:57.9532504Z             {
2026-06-21T23:42:57.9532622Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:42:57.9532703Z               "line": 532
2026-06-21T23:42:57.9532789Z             },
2026-06-21T23:42:57.9532875Z             {
2026-06-21T23:42:57.9532979Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9533076Z               "line": 3110
2026-06-21T23:42:57.9533157Z             }
2026-06-21T23:42:57.9533242Z           ]
2026-06-21T23:42:57.9533327Z         },
2026-06-21T23:42:57.9533414Z         "int": {
2026-06-21T23:42:57.9533504Z           "complete": true,
2026-06-21T23:42:57.9533594Z           "evidence": [
2026-06-21T23:42:57.9533690Z             {
2026-06-21T23:42:57.9533814Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-21T23:42:57.9533900Z               "line": 98
2026-06-21T23:42:57.9533986Z             },
2026-06-21T23:42:57.9534068Z             {
2026-06-21T23:42:57.9534185Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-21T23:42:57.9534276Z               "line": 128
2026-06-21T23:42:57.9534363Z             }
2026-06-21T23:42:57.9534449Z           ]
2026-06-21T23:42:57.9534544Z         },
2026-06-21T23:42:57.9534625Z         "unit": {
2026-06-21T23:42:57.9534731Z           "complete": true,
2026-06-21T23:42:57.9534815Z           "evidence": [
2026-06-21T23:42:57.9534900Z             {
2026-06-21T23:42:57.9535015Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T23:42:57.9535095Z               "line": 68
2026-06-21T23:42:57.9535184Z             },
2026-06-21T23:42:57.9535404Z             {
2026-06-21T23:42:57.9535508Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T23:42:57.9535598Z               "line": 79
2026-06-21T23:42:57.9535686Z             },
2026-06-21T23:42:57.9535767Z             {
2026-06-21T23:42:57.9535870Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T23:42:57.9535962Z               "line": 90
2026-06-21T23:42:57.9536047Z             },
2026-06-21T23:42:57.9536128Z             {
2026-06-21T23:42:57.9536233Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T23:42:57.9536329Z               "line": 151
2026-06-21T23:42:57.9536424Z             }
2026-06-21T23:42:57.9536606Z           ]
2026-06-21T23:42:57.9536696Z         }
2026-06-21T23:42:57.9536776Z       }
2026-06-21T23:42:57.9536867Z     },
2026-06-21T23:42:57.9536954Z     {
2026-06-21T23:42:57.9537048Z       "id": "REQ-MSG-5",
2026-06-21T23:42:57.9537775Z       "title": "user-msg envelope kind + daemon identity gate: a Gateway endpoint / the local user's CLI author user-msg (the user's authority); agent-family senders re-stamped to plain msg; identity-gated never payload-trusted (KH 7.3/7.5); wire-additive (N-1 receivers tolerate the new type)",
2026-06-21T23:42:57.9537875Z       "requiredStages": [
2026-06-21T23:42:57.9537957Z         "doc",
2026-06-21T23:42:57.9538046Z         "impl",
2026-06-21T23:42:57.9538127Z         "unit"
2026-06-21T23:42:57.9538214Z       ],
2026-06-21T23:42:57.9538295Z       "stages": {
2026-06-21T23:42:57.9538385Z         "doc": {
2026-06-21T23:42:57.9538470Z           "complete": true,
2026-06-21T23:42:57.9538562Z           "evidence": [
2026-06-21T23:42:57.9538638Z             {
2026-06-21T23:42:57.9538747Z               "path": "CONTEXT.md",
2026-06-21T23:42:57.9538839Z               "line": 231
2026-06-21T23:42:57.9538924Z             }
2026-06-21T23:42:57.9539100Z           ]
2026-06-21T23:42:57.9539187Z         },
2026-06-21T23:42:57.9539272Z         "impl": {
2026-06-21T23:42:57.9539367Z           "complete": true,
2026-06-21T23:42:57.9539458Z           "evidence": [
2026-06-21T23:42:57.9539544Z             {
2026-06-21T23:42:57.9539663Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T23:42:57.9539759Z               "line": 60
2026-06-21T23:42:57.9539845Z             },
2026-06-21T23:42:57.9539934Z             {
2026-06-21T23:42:57.9540039Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T23:42:57.9540137Z               "line": 126
2026-06-21T23:42:57.9540221Z             },
2026-06-21T23:42:57.9540306Z             {
2026-06-21T23:42:57.9540424Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T23:42:57.9540507Z               "line": 135
2026-06-21T23:42:57.9540592Z             },
2026-06-21T23:42:57.9540677Z             {
2026-06-21T23:42:57.9540787Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T23:42:57.9540883Z               "line": 149
2026-06-21T23:42:57.9540959Z             },
2026-06-21T23:42:57.9541040Z             {
2026-06-21T23:42:57.9541155Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T23:42:57.9541250Z               "line": 178
2026-06-21T23:42:57.9541335Z             },
2026-06-21T23:42:57.9541417Z             {
2026-06-21T23:42:57.9541531Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9541617Z               "line": 2802
2026-06-21T23:42:57.9541698Z             }
2026-06-21T23:42:57.9541770Z           ]
2026-06-21T23:42:57.9541860Z         },
2026-06-21T23:42:57.9541941Z         "int": {
2026-06-21T23:42:57.9542043Z           "complete": true,
2026-06-21T23:42:57.9542137Z           "evidence": [
2026-06-21T23:42:57.9542222Z             {
2026-06-21T23:42:57.9542347Z               "path": "crates/spt/tests/gateway_e2e.rs",
2026-06-21T23:42:57.9542433Z               "line": 19
2026-06-21T23:42:57.9542513Z             }
2026-06-21T23:42:57.9542598Z           ]
2026-06-21T23:42:57.9542689Z         },
2026-06-21T23:42:57.9542783Z         "unit": {
2026-06-21T23:42:57.9542863Z           "complete": true,
2026-06-21T23:42:57.9543054Z           "evidence": [
2026-06-21T23:42:57.9543131Z             {
2026-06-21T23:42:57.9543253Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T23:42:57.9543340Z               "line": 192
2026-06-21T23:42:57.9543425Z             },
2026-06-21T23:42:57.9543511Z             {
2026-06-21T23:42:57.9543626Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-21T23:42:57.9543717Z               "line": 154
2026-06-21T23:42:57.9543798Z             },
2026-06-21T23:42:57.9543887Z             {
2026-06-21T23:42:57.9543989Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T23:42:57.9544083Z               "line": 122
2026-06-21T23:42:57.9544265Z             },
2026-06-21T23:42:57.9544351Z             {
2026-06-21T23:42:57.9544460Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T23:42:57.9544546Z               "line": 452
2026-06-21T23:42:57.9544638Z             },
2026-06-21T23:42:57.9544708Z             {
2026-06-21T23:42:57.9544827Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T23:42:57.9544914Z               "line": 501
2026-06-21T23:42:57.9545000Z             },
2026-06-21T23:42:57.9545084Z             {
2026-06-21T23:42:57.9545190Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T23:42:57.9545291Z               "line": 517
2026-06-21T23:42:57.9545366Z             },
2026-06-21T23:42:57.9545461Z             {
2026-06-21T23:42:57.9545570Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T23:42:57.9545660Z               "line": 536
2026-06-21T23:42:57.9545754Z             },
2026-06-21T23:42:57.9545834Z             {
2026-06-21T23:42:57.9545954Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9546045Z               "line": 7660
2026-06-21T23:42:57.9546135Z             }
2026-06-21T23:42:57.9546222Z           ]
2026-06-21T23:42:57.9546307Z         }
2026-06-21T23:42:57.9546392Z       }
2026-06-21T23:42:57.9546478Z     },
2026-06-21T23:42:57.9546565Z     {
2026-06-21T23:42:57.9546665Z       "id": "REQ-MSG-6",
2026-06-21T23:42:57.9548249Z       "title": "cross-node Gateway user-msg honored via advertised endpoint_type: a user-msg from a Gateway-typed origin survives the receive_wan funnel as user-msg (vs the fail-closed re-stamp), keyed on the QUIC-handshake-proven origin node (never wire `from`). Trust boundary = subnet membership (operator-ratified 2026-06-13); no defense against an in-subnet member forging the type. Instance.endpoint_type is an additive serde-default field extending REQ-INST-7's data model. Absent/unknown type → re-stamp (N-1 rollout grace)",
2026-06-21T23:42:57.9548354Z       "requiredStages": [
2026-06-21T23:42:57.9548439Z         "doc",
2026-06-21T23:42:57.9548541Z         "impl",
2026-06-21T23:42:57.9548635Z         "unit"
2026-06-21T23:42:57.9548716Z       ],
2026-06-21T23:42:57.9548807Z       "stages": {
2026-06-21T23:42:57.9548888Z         "doc": {
2026-06-21T23:42:57.9549108Z           "complete": true,
2026-06-21T23:42:57.9549193Z           "evidence": [
2026-06-21T23:42:57.9549288Z             {
2026-06-21T23:42:57.9549394Z               "path": "CONTEXT.md",
2026-06-21T23:42:57.9549474Z               "line": 234
2026-06-21T23:42:57.9549560Z             }
2026-06-21T23:42:57.9549641Z           ]
2026-06-21T23:42:57.9549723Z         },
2026-06-21T23:42:57.9549808Z         "impl": {
2026-06-21T23:42:57.9549904Z           "complete": true,
2026-06-21T23:42:57.9549999Z           "evidence": [
2026-06-21T23:42:57.9550086Z             {
2026-06-21T23:42:57.9550213Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:42:57.9550304Z               "line": 177
2026-06-21T23:42:57.9550401Z             },
2026-06-21T23:42:57.9550471Z             {
2026-06-21T23:42:57.9550605Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:42:57.9550692Z               "line": 428
2026-06-21T23:42:57.9550767Z             },
2026-06-21T23:42:57.9550856Z             {
2026-06-21T23:42:57.9550970Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:42:57.9551161Z               "line": 451
2026-06-21T23:42:57.9551242Z             },
2026-06-21T23:42:57.9551333Z             {
2026-06-21T23:42:57.9551458Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T23:42:57.9551543Z               "line": 89
2026-06-21T23:42:57.9551624Z             },
2026-06-21T23:42:57.9551706Z             {
2026-06-21T23:42:57.9551838Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:42:57.9551915Z               "line": 155
2026-06-21T23:42:57.9552001Z             }
2026-06-21T23:42:57.9552087Z           ]
2026-06-21T23:42:57.9552167Z         },
2026-06-21T23:42:57.9552349Z         "int": {
2026-06-21T23:42:57.9552449Z           "complete": false,
2026-06-21T23:42:57.9552549Z           "evidence": []
2026-06-21T23:42:57.9552631Z         },
2026-06-21T23:42:57.9552716Z         "unit": {
2026-06-21T23:42:57.9552816Z           "complete": true,
2026-06-21T23:42:57.9552897Z           "evidence": [
2026-06-21T23:42:57.9552993Z             {
2026-06-21T23:42:57.9553120Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:42:57.9553210Z               "line": 1746
2026-06-21T23:42:57.9553291Z             },
2026-06-21T23:42:57.9553376Z             {
2026-06-21T23:42:57.9553504Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T23:42:57.9553585Z               "line": 219
2026-06-21T23:42:57.9553672Z             }
2026-06-21T23:42:57.9553757Z           ]
2026-06-21T23:42:57.9553838Z         }
2026-06-21T23:42:57.9553914Z       }
2026-06-21T23:42:57.9554000Z     },
2026-06-21T23:42:57.9554090Z     {
2026-06-21T23:42:57.9554196Z       "id": "REQ-MSG-ENVELOPE",
2026-06-21T23:42:57.9557964Z       "title": "The <EVENT type=\"msg\" from=…>body</EVENT> envelope (spt-proto::event, the ADR-0001 grammar) is the SOLE canonical arriving-message format at EVERY harness arriving-message surface on an AGENT perch — api listen AND api poll/worker-poll, byte-identical (reverses REQ-MSG-4's 'hook drains keep the raw frame by contract'). SCOPE CARVE-OUT: the shell-command relay (api poll <shell-id> --link, cmd_poll_shell) is a distinct internal transport carrying RAW MAC'd stamped frames the shell child consumes verbatim — NOT an arriving-message surface, deliberately EXEMPT from <EVENT> composition (notify_shell_e2e guards this boundary). __REPLY_TO__ — mis-elevated during the clean-room port to a fake ADR-0001 'stable wire format' (spt-msg/wire.rs, lib.rs) — is REMOVED entirely (spool format_row, the spt-msg TCP frame, emit parse_frame); (from, body) carried structurally, <EVENT> composed once at the delivery boundary. No legacy sister-interop (spt-core never required it). Reply-correlation rebinds onto the structural from / <EVENT from=…> attribute (ADR-0009 access-gate + ADR-0012 Psyche/spt-live reply-target). Self-delimiting by construction → finding F-002 (non-self-delimiting multi-message poll) dissolves. ADR-0020.",
2026-06-21T23:42:57.9558094Z       "requiredStages": [
2026-06-21T23:42:57.9558192Z         "doc",
2026-06-21T23:42:57.9558278Z         "impl",
2026-06-21T23:42:57.9558370Z         "unit",
2026-06-21T23:42:57.9558451Z         "int"
2026-06-21T23:42:57.9558540Z       ],
2026-06-21T23:42:57.9558629Z       "stages": {
2026-06-21T23:42:57.9558716Z         "doc": {
2026-06-21T23:42:57.9558810Z           "complete": true,
2026-06-21T23:42:57.9558899Z           "evidence": [
2026-06-21T23:42:57.9559072Z             {
2026-06-21T23:42:57.9559305Z               "path": "docs/adr/0020-event-envelope-sole-arriving-format-reply-to-removed.md",
2026-06-21T23:42:57.9559396Z               "line": 47
2026-06-21T23:42:57.9559486Z             }
2026-06-21T23:42:57.9559576Z           ]
2026-06-21T23:42:57.9559664Z         },
2026-06-21T23:42:57.9559749Z         "impl": {
2026-06-21T23:42:57.9559848Z           "complete": true,
2026-06-21T23:42:57.9559935Z           "evidence": [
2026-06-21T23:42:57.9560026Z             {
2026-06-21T23:42:57.9560144Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T23:42:57.9560341Z               "line": 20
2026-06-21T23:42:57.9560436Z             },
2026-06-21T23:42:57.9560521Z             {
2026-06-21T23:42:57.9560632Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T23:42:57.9560730Z               "line": 33
2026-06-21T23:42:57.9560821Z             },
2026-06-21T23:42:57.9560908Z             {
2026-06-21T23:42:57.9561017Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T23:42:57.9561112Z               "line": 47
2026-06-21T23:42:57.9561194Z             },
2026-06-21T23:42:57.9561285Z             {
2026-06-21T23:42:57.9561388Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T23:42:57.9561603Z               "line": 58
2026-06-21T23:42:57.9561689Z             },
2026-06-21T23:42:57.9561779Z             {
2026-06-21T23:42:57.9561884Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T23:42:57.9561975Z               "line": 14
2026-06-21T23:42:57.9562064Z             },
2026-06-21T23:42:57.9562165Z             {
2026-06-21T23:42:57.9562270Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T23:42:57.9562365Z               "line": 27
2026-06-21T23:42:57.9562450Z             },
2026-06-21T23:42:57.9562543Z             {
2026-06-21T23:42:57.9562651Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T23:42:57.9562742Z               "line": 40
2026-06-21T23:42:57.9562838Z             },
2026-06-21T23:42:57.9562924Z             {
2026-06-21T23:42:57.9563042Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T23:42:57.9563134Z               "line": 92
2026-06-21T23:42:57.9563224Z             },
2026-06-21T23:42:57.9563304Z             {
2026-06-21T23:42:57.9563438Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T23:42:57.9563534Z               "line": 143
2026-06-21T23:42:57.9563619Z             },
2026-06-21T23:42:57.9563709Z             {
2026-06-21T23:42:57.9563828Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T23:42:57.9563922Z               "line": 216
2026-06-21T23:42:57.9564011Z             },
2026-06-21T23:42:57.9564102Z             {
2026-06-21T23:42:57.9564217Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:42:57.9564308Z               "line": 533
2026-06-21T23:42:57.9564398Z             },
2026-06-21T23:42:57.9564479Z             {
2026-06-21T23:42:57.9564598Z               "path": "crates/spt/src/api/worker.rs",
2026-06-21T23:42:57.9564683Z               "line": 78
2026-06-21T23:42:57.9564776Z             },
2026-06-21T23:42:57.9564866Z             {
2026-06-21T23:42:57.9564970Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9565071Z               "line": 3111
2026-06-21T23:42:57.9565166Z             }
2026-06-21T23:42:57.9565256Z           ]
2026-06-21T23:42:57.9565347Z         },
2026-06-21T23:42:57.9565443Z         "int": {
2026-06-21T23:42:57.9565542Z           "complete": true,
2026-06-21T23:42:57.9565632Z           "evidence": [
2026-06-21T23:42:57.9565725Z             {
2026-06-21T23:42:57.9565857Z               "path": "crates/spt/tests/poll_envelope_e2e.rs",
2026-06-21T23:42:57.9565957Z               "line": 15
2026-06-21T23:42:57.9566044Z             }
2026-06-21T23:42:57.9566134Z           ]
2026-06-21T23:42:57.9566214Z         },
2026-06-21T23:42:57.9566291Z         "unit": {
2026-06-21T23:42:57.9566383Z           "complete": true,
2026-06-21T23:42:57.9566472Z           "evidence": [
2026-06-21T23:42:57.9566557Z             {
2026-06-21T23:42:57.9566652Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T23:42:57.9566752Z               "line": 102
2026-06-21T23:42:57.9566831Z             },
2026-06-21T23:42:57.9567084Z             {
2026-06-21T23:42:57.9567203Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-21T23:42:57.9567288Z               "line": 137
2026-06-21T23:42:57.9567376Z             },
2026-06-21T23:42:57.9567461Z             {
2026-06-21T23:42:57.9567574Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T23:42:57.9567738Z               "line": 98
2026-06-21T23:42:57.9567823Z             },
2026-06-21T23:42:57.9567914Z             {
2026-06-21T23:42:57.9568019Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T23:42:57.9568114Z               "line": 106
2026-06-21T23:42:57.9568194Z             },
2026-06-21T23:42:57.9568282Z             {
2026-06-21T23:42:57.9568395Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T23:42:57.9568476Z               "line": 113
2026-06-21T23:42:57.9568562Z             },
2026-06-21T23:42:57.9568644Z             {
2026-06-21T23:42:57.9568752Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-21T23:42:57.9568843Z               "line": 122
2026-06-21T23:42:57.9569095Z             }
2026-06-21T23:42:57.9569180Z           ]
2026-06-21T23:42:57.9569271Z         }
2026-06-21T23:42:57.9569361Z       }
2026-06-21T23:42:57.9569441Z     },
2026-06-21T23:42:57.9569541Z     {
2026-06-21T23:42:57.9569651Z       "id": "REQ-MSG-IDLE-TRANSLATION-BINARY",
2026-06-21T23:42:57.9574624Z       "title": "spt-hosted idle message delivery via an adapter TRANSLATION BINARY (ADR-0022). New opt-in manifest section `[message-idle-translation-binary]` = a TABLE carrying a `path` scalar (doyle OPT-B ruling: modeled as a table, not a bare top-level scalar, so a preceding section cannot silently absorb it + N+1 extensible; spt-core does NOT deny_unknown_fields, so a future key degrades gracefully); spt-core LIFECYCLE-manages it (spawn when the endpoint comes up, terminate when it goes down). The binary is a PURE stdin→stdout filter; spt-core owns EVERY PTY write. stdin (JSON-lines): `{type:\"init\",endpoint_id,node}` first · `{type:\"event\",envelope:\"<EVENT…>\"}` per inbound message (ADR-0020 envelope) · `{type:\"input\"}` content-free ping on each operator keystroke (binary tracks user-idle for its own idle-gated buffering; PTY input content NOT duplicated). stdout (JSON-lines): keystroke-commands `{key:…}`/`{delay_ms:…}`/`{text:…}` (extensible). spt-core applies the emitted sequence to the broker PTY ATOMICALLY (the W1 coordination — REQ-HAZARD-INJECT-CONTROL-COEXIST). The daemon poll feed is the ONE idle substrate for both topologies (Q1=A): harness-hosted consumer = the Monitor child, spt-hosted consumer = this binary; spt-core PREFERS a perch's poll listener if one exists (so spt-hosted can run a listener AND keep `spt rc`). Idle-only; busy/mid-turn = adapter hook-injection. Closes the current grounding gap: `api bind` registers no listener port → a listener-less spt-hosted perch SPOOLS inbound (only spooling+adapter-poll works today) → this delivers real inbound into the PTY. The v0.11.0 raw inject is the degenerate `{text:payload}{key:enter}` case. (v0.13.0)",
2026-06-21T23:42:57.9574759Z       "requiredStages": [
2026-06-21T23:42:57.9574848Z         "doc",
2026-06-21T23:42:57.9574933Z         "impl",
2026-06-21T23:42:57.9575020Z         "unit",
2026-06-21T23:42:57.9575106Z         "int"
2026-06-21T23:42:57.9575191Z       ],
2026-06-21T23:42:57.9575297Z       "stages": {
2026-06-21T23:42:57.9575388Z         "doc": {
2026-06-21T23:42:57.9575478Z           "complete": true,
2026-06-21T23:42:57.9575563Z           "evidence": [
2026-06-21T23:42:57.9575646Z             {
2026-06-21T23:42:57.9575793Z               "path": "docs-site/src/harness-contract/manifest.md",
2026-06-21T23:42:57.9575883Z               "line": 277
2026-06-21T23:42:57.9575970Z             },
2026-06-21T23:42:57.9576055Z             {
2026-06-21T23:42:57.9576164Z               "path": "docs/MANIFEST.md",
2026-06-21T23:42:57.9576260Z               "line": 198
2026-06-21T23:42:57.9576346Z             }
2026-06-21T23:42:57.9576441Z           ]
2026-06-21T23:42:57.9576522Z         },
2026-06-21T23:42:57.9576619Z         "impl": {
2026-06-21T23:42:57.9576713Z           "complete": true,
2026-06-21T23:42:57.9576799Z           "evidence": [
2026-06-21T23:42:57.9576890Z             {
2026-06-21T23:42:57.9577000Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:42:57.9577094Z               "line": 1103
2026-06-21T23:42:57.9577298Z             },
2026-06-21T23:42:57.9577382Z             {
2026-06-21T23:42:57.9577505Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T23:42:57.9577601Z               "line": 23
2026-06-21T23:42:57.9577683Z             },
2026-06-21T23:42:57.9577768Z             {
2026-06-21T23:42:57.9577897Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T23:42:57.9577988Z               "line": 91
2026-06-21T23:42:57.9578083Z             },
2026-06-21T23:42:57.9578159Z             {
2026-06-21T23:42:57.9578288Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T23:42:57.9578374Z               "line": 239
2026-06-21T23:42:57.9578560Z             },
2026-06-21T23:42:57.9578655Z             {
2026-06-21T23:42:57.9578774Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T23:42:57.9578861Z               "line": 287
2026-06-21T23:42:57.9579032Z             },
2026-06-21T23:42:57.9579113Z             {
2026-06-21T23:42:57.9579247Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T23:42:57.9579331Z               "line": 311
2026-06-21T23:42:57.9579418Z             },
2026-06-21T23:42:57.9579500Z             {
2026-06-21T23:42:57.9579627Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:42:57.9579717Z               "line": 60
2026-06-21T23:42:57.9579793Z             },
2026-06-21T23:42:57.9579879Z             {
2026-06-21T23:42:57.9579996Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:42:57.9580086Z               "line": 889
2026-06-21T23:42:57.9580173Z             }
2026-06-21T23:42:57.9580255Z           ]
2026-06-21T23:42:57.9580348Z         },
2026-06-21T23:42:57.9580430Z         "int": {
2026-06-21T23:42:57.9580526Z           "complete": true,
2026-06-21T23:42:57.9580607Z           "evidence": [
2026-06-21T23:42:57.9580697Z             {
2026-06-21T23:42:57.9580841Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T23:42:57.9580940Z               "line": 1089
2026-06-21T23:42:57.9581026Z             },
2026-06-21T23:42:57.9581103Z             {
2026-06-21T23:42:57.9581246Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T23:42:57.9581321Z               "line": 1194
2026-06-21T23:42:57.9581408Z             },
2026-06-21T23:42:57.9581494Z             {
2026-06-21T23:42:57.9581636Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T23:42:57.9581733Z               "line": 1262
2026-06-21T23:42:57.9581813Z             },
2026-06-21T23:42:57.9581899Z             {
2026-06-21T23:42:57.9582029Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-21T23:42:57.9582133Z               "line": 1355
2026-06-21T23:42:57.9582208Z             }
2026-06-21T23:42:57.9582295Z           ]
2026-06-21T23:42:57.9582381Z         },
2026-06-21T23:42:57.9582467Z         "unit": {
2026-06-21T23:42:57.9582560Z           "complete": true,
2026-06-21T23:42:57.9582651Z           "evidence": [
2026-06-21T23:42:57.9582742Z             {
2026-06-21T23:42:57.9582861Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T23:42:57.9582951Z               "line": 270
2026-06-21T23:42:57.9583043Z             },
2026-06-21T23:42:57.9583129Z             {
2026-06-21T23:42:57.9583256Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T23:42:57.9583343Z               "line": 350
2026-06-21T23:42:57.9583428Z             },
2026-06-21T23:42:57.9583513Z             {
2026-06-21T23:42:57.9583634Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T23:42:57.9583720Z               "line": 381
2026-06-21T23:42:57.9583805Z             },
2026-06-21T23:42:57.9583881Z             {
2026-06-21T23:42:57.9584002Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T23:42:57.9584091Z               "line": 411
2026-06-21T23:42:57.9584177Z             },
2026-06-21T23:42:57.9584264Z             {
2026-06-21T23:42:57.9584506Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-21T23:42:57.9584588Z               "line": 440
2026-06-21T23:42:57.9584674Z             },
2026-06-21T23:42:57.9584763Z             {
2026-06-21T23:42:57.9584886Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:42:57.9584977Z               "line": 1181
2026-06-21T23:42:57.9585061Z             }
2026-06-21T23:42:57.9585151Z           ]
2026-06-21T23:42:57.9585227Z         }
2026-06-21T23:42:57.9585319Z       }
2026-06-21T23:42:57.9585399Z     },
2026-06-21T23:42:57.9585489Z     {
2026-06-21T23:42:57.9585580Z       "id": "REQ-NET-1",
2026-06-21T23:42:57.9585766Z       "title": "WAN messaging first-class, behind default-on net feature flag",
2026-06-21T23:42:57.9585962Z       "requiredStages": [
2026-06-21T23:42:57.9586047Z         "impl",
2026-06-21T23:42:57.9586142Z         "unit",
2026-06-21T23:42:57.9586225Z         "int"
2026-06-21T23:42:57.9586320Z       ],
2026-06-21T23:42:57.9586405Z       "stages": {
2026-06-21T23:42:57.9586506Z         "doc": {
2026-06-21T23:42:57.9586610Z           "complete": false,
2026-06-21T23:42:57.9586705Z           "evidence": []
2026-06-21T23:42:57.9586791Z         },
2026-06-21T23:42:57.9586878Z         "impl": {
2026-06-21T23:42:57.9586977Z           "complete": true,
2026-06-21T23:42:57.9587068Z           "evidence": [
2026-06-21T23:42:57.9587160Z             {
2026-06-21T23:42:57.9587282Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T23:42:57.9587368Z               "line": 54
2026-06-21T23:42:57.9587464Z             },
2026-06-21T23:42:57.9587546Z             {
2026-06-21T23:42:57.9587668Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T23:42:57.9587758Z               "line": 594
2026-06-21T23:42:57.9587840Z             },
2026-06-21T23:42:57.9587928Z             {
2026-06-21T23:42:57.9588041Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-21T23:42:57.9588138Z               "line": 130
2026-06-21T23:42:57.9588224Z             },
2026-06-21T23:42:57.9588318Z             {
2026-06-21T23:42:57.9588438Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T23:42:57.9588520Z               "line": 97
2026-06-21T23:42:57.9588605Z             },
2026-06-21T23:42:57.9588690Z             {
2026-06-21T23:42:57.9588810Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T23:42:57.9588896Z               "line": 159
2026-06-21T23:42:57.9589062Z             },
2026-06-21T23:42:57.9589149Z             {
2026-06-21T23:42:57.9589258Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T23:42:57.9589348Z               "line": 175
2026-06-21T23:42:57.9589431Z             },
2026-06-21T23:42:57.9589515Z             {
2026-06-21T23:42:57.9589620Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T23:42:57.9589712Z               "line": 190
2026-06-21T23:42:57.9589793Z             },
2026-06-21T23:42:57.9589868Z             {
2026-06-21T23:42:57.9589973Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T23:42:57.9590060Z               "line": 271
2026-06-21T23:42:57.9590150Z             },
2026-06-21T23:42:57.9590234Z             {
2026-06-21T23:42:57.9590358Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T23:42:57.9590453Z               "line": 306
2026-06-21T23:42:57.9590528Z             },
2026-06-21T23:42:57.9590618Z             {
2026-06-21T23:42:57.9590733Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T23:42:57.9590824Z               "line": 312
2026-06-21T23:42:57.9590904Z             },
2026-06-21T23:42:57.9590995Z             {
2026-06-21T23:42:57.9591119Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T23:42:57.9591209Z               "line": 318
2026-06-21T23:42:57.9591290Z             },
2026-06-21T23:42:57.9591368Z             {
2026-06-21T23:42:57.9591496Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T23:42:57.9591576Z               "line": 334
2026-06-21T23:42:57.9591772Z             },
2026-06-21T23:42:57.9591858Z             {
2026-06-21T23:42:57.9591973Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T23:42:57.9592064Z               "line": 354
2026-06-21T23:42:57.9592149Z             },
2026-06-21T23:42:57.9592235Z             {
2026-06-21T23:42:57.9592355Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T23:42:57.9592444Z               "line": 35
2026-06-21T23:42:57.9592530Z             },
2026-06-21T23:42:57.9592613Z             {
2026-06-21T23:42:57.9592730Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T23:42:57.9592807Z               "line": 85
2026-06-21T23:42:57.9593022Z             },
2026-06-21T23:42:57.9593106Z             {
2026-06-21T23:42:57.9593225Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T23:42:57.9593312Z               "line": 138
2026-06-21T23:42:57.9593398Z             },
2026-06-21T23:42:57.9593487Z             {
2026-06-21T23:42:57.9593598Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9593694Z               "line": 2953
2026-06-21T23:42:57.9593778Z             },
2026-06-21T23:42:57.9593865Z             {
2026-06-21T23:42:57.9593979Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T23:42:57.9594065Z               "line": 17
2026-06-21T23:42:57.9594150Z             }
2026-06-21T23:42:57.9594228Z           ]
2026-06-21T23:42:57.9594317Z         },
2026-06-21T23:42:57.9594403Z         "int": {
2026-06-21T23:42:57.9594494Z           "complete": true,
2026-06-21T23:42:57.9594590Z           "evidence": [
2026-06-21T23:42:57.9594675Z             {
2026-06-21T23:42:57.9594804Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T23:42:57.9594891Z               "line": 341
2026-06-21T23:42:57.9594984Z             },
2026-06-21T23:42:57.9595075Z             {
2026-06-21T23:42:57.9595191Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T23:42:57.9595290Z               "line": 675
2026-06-21T23:42:57.9595380Z             },
2026-06-21T23:42:57.9595466Z             {
2026-06-21T23:42:57.9595575Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T23:42:57.9595673Z               "line": 973
2026-06-21T23:42:57.9595763Z             }
2026-06-21T23:42:57.9595840Z           ]
2026-06-21T23:42:57.9595922Z         },
2026-06-21T23:42:57.9595997Z         "unit": {
2026-06-21T23:42:57.9596093Z           "complete": true,
2026-06-21T23:42:57.9596179Z           "evidence": [
2026-06-21T23:42:57.9596269Z             {
2026-06-21T23:42:57.9596397Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T23:42:57.9596485Z               "line": 651
2026-06-21T23:42:57.9596575Z             },
2026-06-21T23:42:57.9596655Z             {
2026-06-21T23:42:57.9596775Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T23:42:57.9596865Z               "line": 686
2026-06-21T23:42:57.9596955Z             },
2026-06-21T23:42:57.9597041Z             {
2026-06-21T23:42:57.9597170Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T23:42:57.9597261Z               "line": 940
2026-06-21T23:42:57.9597346Z             },
2026-06-21T23:42:57.9597443Z             {
2026-06-21T23:42:57.9597556Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-21T23:42:57.9597652Z               "line": 201
2026-06-21T23:42:57.9597734Z             },
2026-06-21T23:42:57.9597823Z             {
2026-06-21T23:42:57.9597943Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T23:42:57.9598025Z               "line": 442
2026-06-21T23:42:57.9598111Z             },
2026-06-21T23:42:57.9598200Z             {
2026-06-21T23:42:57.9598323Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T23:42:57.9598419Z               "line": 456
2026-06-21T23:42:57.9598502Z             },
2026-06-21T23:42:57.9598592Z             {
2026-06-21T23:42:57.9598703Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T23:42:57.9598883Z               "line": 475
2026-06-21T23:42:57.9599065Z             },
2026-06-21T23:42:57.9599155Z             {
2026-06-21T23:42:57.9599279Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T23:42:57.9599366Z               "line": 120
2026-06-21T23:42:57.9599451Z             },
2026-06-21T23:42:57.9599541Z             {
2026-06-21T23:42:57.9599667Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-21T23:42:57.9599761Z               "line": 163
2026-06-21T23:42:57.9599847Z             },
2026-06-21T23:42:57.9599928Z             {
2026-06-21T23:42:57.9600038Z               "path": "crates/spt-store/src/spool.rs",
2026-06-21T23:42:57.9600262Z               "line": 530
2026-06-21T23:42:57.9600348Z             },
2026-06-21T23:42:57.9600428Z             {
2026-06-21T23:42:57.9600543Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T23:42:57.9600630Z               "line": 616
2026-06-21T23:42:57.9600719Z             },
2026-06-21T23:42:57.9600809Z             {
2026-06-21T23:42:57.9600913Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T23:42:57.9601008Z               "line": 1006
2026-06-21T23:42:57.9601093Z             }
2026-06-21T23:42:57.9601183Z           ]
2026-06-21T23:42:57.9601265Z         }
2026-06-21T23:42:57.9601346Z       }
2026-06-21T23:42:57.9601431Z     },
2026-06-21T23:42:57.9601522Z     {
2026-06-21T23:42:57.9601613Z       "id": "REQ-NET-2",
2026-06-21T23:42:57.9601788Z       "title": "n0 relay default + self-host knob + plain-language disclosure",
2026-06-21T23:42:57.9601885Z       "requiredStages": [
2026-06-21T23:42:57.9601961Z         "impl"
2026-06-21T23:42:57.9602051Z       ],
2026-06-21T23:42:57.9602136Z       "stages": {
2026-06-21T23:42:57.9602228Z         "doc": {
2026-06-21T23:42:57.9602323Z           "complete": false,
2026-06-21T23:42:57.9606333Z           "evidence": []
2026-06-21T23:42:57.9606448Z         },
2026-06-21T23:42:57.9606538Z         "impl": {
2026-06-21T23:42:57.9606643Z           "complete": true,
2026-06-21T23:42:57.9606744Z           "evidence": [
2026-06-21T23:42:57.9606839Z             {
2026-06-21T23:42:57.9606967Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T23:42:57.9607068Z               "line": 57
2026-06-21T23:42:57.9607159Z             },
2026-06-21T23:42:57.9607244Z             {
2026-06-21T23:42:57.9607379Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T23:42:57.9607464Z               "line": 71
2026-06-21T23:42:57.9607553Z             },
2026-06-21T23:42:57.9607636Z             {
2026-06-21T23:42:57.9607768Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T23:42:57.9607849Z               "line": 81
2026-06-21T23:42:57.9607941Z             },
2026-06-21T23:42:57.9608032Z             {
2026-06-21T23:42:57.9608145Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T23:42:57.9608241Z               "line": 159
2026-06-21T23:42:57.9608323Z             },
2026-06-21T23:42:57.9608412Z             {
2026-06-21T23:42:57.9608541Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T23:42:57.9608628Z               "line": 175
2026-06-21T23:42:57.9608717Z             },
2026-06-21T23:42:57.9608802Z             {
2026-06-21T23:42:57.9608921Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-21T23:42:57.9609095Z               "line": 190
2026-06-21T23:42:57.9609176Z             }
2026-06-21T23:42:57.9609263Z           ]
2026-06-21T23:42:57.9609344Z         },
2026-06-21T23:42:57.9609429Z         "int": {
2026-06-21T23:42:57.9609519Z           "complete": false,
2026-06-21T23:42:57.9609630Z           "evidence": []
2026-06-21T23:42:57.9609715Z         },
2026-06-21T23:42:57.9609806Z         "unit": {
2026-06-21T23:42:57.9609898Z           "complete": true,
2026-06-21T23:42:57.9609983Z           "evidence": [
2026-06-21T23:42:57.9610072Z             {
2026-06-21T23:42:57.9610193Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T23:42:57.9610288Z               "line": 402
2026-06-21T23:42:57.9610498Z             }
2026-06-21T23:42:57.9610589Z           ]
2026-06-21T23:42:57.9610678Z         }
2026-06-21T23:42:57.9610765Z       }
2026-06-21T23:42:57.9610866Z     },
2026-06-21T23:42:57.9610950Z     {
2026-06-21T23:42:57.9611051Z       "id": "REQ-NET-3",
2026-06-21T23:42:57.9611242Z       "title": "Cross-node Psyche sync over P2P replaces gh-repo-sync",
2026-06-21T23:42:57.9611336Z       "requiredStages": [
2026-06-21T23:42:57.9611416Z         "impl",
2026-06-21T23:42:57.9611507Z         "unit"
2026-06-21T23:42:57.9611596Z       ],
2026-06-21T23:42:57.9611686Z       "stages": {
2026-06-21T23:42:57.9611777Z         "doc": {
2026-06-21T23:42:57.9611967Z           "complete": false,
2026-06-21T23:42:57.9612072Z           "evidence": []
2026-06-21T23:42:57.9612163Z         },
2026-06-21T23:42:57.9612249Z         "impl": {
2026-06-21T23:42:57.9612339Z           "complete": true,
2026-06-21T23:42:57.9612430Z           "evidence": [
2026-06-21T23:42:57.9612521Z             {
2026-06-21T23:42:57.9612649Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T23:42:57.9612740Z               "line": 39
2026-06-21T23:42:57.9612826Z             },
2026-06-21T23:42:57.9612911Z             {
2026-06-21T23:42:57.9613031Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T23:42:57.9613118Z               "line": 182
2026-06-21T23:42:57.9613202Z             },
2026-06-21T23:42:57.9613283Z             {
2026-06-21T23:42:57.9613399Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-21T23:42:57.9613489Z               "line": 333
2026-06-21T23:42:57.9613564Z             },
2026-06-21T23:42:57.9613650Z             {
2026-06-21T23:42:57.9613771Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-21T23:42:57.9613865Z               "line": 36
2026-06-21T23:42:57.9613951Z             },
2026-06-21T23:42:57.9614038Z             {
2026-06-21T23:42:57.9614170Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T23:42:57.9614264Z               "line": 158
2026-06-21T23:42:57.9614355Z             },
2026-06-21T23:42:57.9614442Z             {
2026-06-21T23:42:57.9614570Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T23:42:57.9614655Z               "line": 238
2026-06-21T23:42:57.9614752Z             },
2026-06-21T23:42:57.9614842Z             {
2026-06-21T23:42:57.9614966Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T23:42:57.9615057Z               "line": 259
2026-06-21T23:42:57.9615133Z             },
2026-06-21T23:42:57.9615223Z             {
2026-06-21T23:42:57.9615338Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T23:42:57.9615443Z               "line": 317
2026-06-21T23:42:57.9615533Z             },
2026-06-21T23:42:57.9615619Z             {
2026-06-21T23:42:57.9615734Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T23:42:57.9615820Z               "line": 336
2026-06-21T23:42:57.9615910Z             },
2026-06-21T23:42:57.9616006Z             {
2026-06-21T23:42:57.9616128Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T23:42:57.9616225Z               "line": 374
2026-06-21T23:42:57.9616311Z             },
2026-06-21T23:42:57.9616401Z             {
2026-06-21T23:42:57.9616519Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T23:42:57.9616610Z               "line": 419
2026-06-21T23:42:57.9616700Z             },
2026-06-21T23:42:57.9616784Z             {
2026-06-21T23:42:57.9616908Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T23:42:57.9616999Z               "line": 432
2026-06-21T23:42:57.9617085Z             },
2026-06-21T23:42:57.9617174Z             {
2026-06-21T23:42:57.9617300Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T23:42:57.9617385Z               "line": 29
2026-06-21T23:42:57.9617465Z             },
2026-06-21T23:42:57.9617552Z             {
2026-06-21T23:42:57.9617671Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T23:42:57.9617857Z               "line": 72
2026-06-21T23:42:57.9617939Z             },
2026-06-21T23:42:57.9618024Z             {
2026-06-21T23:42:57.9618148Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T23:42:57.9618234Z               "line": 123
2026-06-21T23:42:57.9618314Z             }
2026-06-21T23:42:57.9618400Z           ]
2026-06-21T23:42:57.9618486Z         },
2026-06-21T23:42:57.9618568Z         "int": {
2026-06-21T23:42:57.9618657Z           "complete": false,
2026-06-21T23:42:57.9618748Z           "evidence": []
2026-06-21T23:42:57.9618831Z         },
2026-06-21T23:42:57.9618916Z         "unit": {
2026-06-21T23:42:57.9619183Z           "complete": true,
2026-06-21T23:42:57.9619273Z           "evidence": [
2026-06-21T23:42:57.9619348Z             {
2026-06-21T23:42:57.9619472Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T23:42:57.9619562Z               "line": 223
2026-06-21T23:42:57.9619646Z             },
2026-06-21T23:42:57.9619741Z             {
2026-06-21T23:42:57.9619857Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T23:42:57.9619952Z               "line": 351
2026-06-21T23:42:57.9620032Z             },
2026-06-21T23:42:57.9620114Z             {
2026-06-21T23:42:57.9620233Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-21T23:42:57.9620308Z               "line": 504
2026-06-21T23:42:57.9620389Z             },
2026-06-21T23:42:57.9620472Z             {
2026-06-21T23:42:57.9620591Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-21T23:42:57.9620666Z               "line": 93
2026-06-21T23:42:57.9620762Z             },
2026-06-21T23:42:57.9620857Z             {
2026-06-21T23:42:57.9620952Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-21T23:42:57.9621048Z               "line": 142
2026-06-21T23:42:57.9621130Z             },
2026-06-21T23:42:57.9621210Z             {
2026-06-21T23:42:57.9621325Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T23:42:57.9621426Z               "line": 315
2026-06-21T23:42:57.9621520Z             },
2026-06-21T23:42:57.9621601Z             {
2026-06-21T23:42:57.9621726Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T23:42:57.9621802Z               "line": 355
2026-06-21T23:42:57.9621891Z             },
2026-06-21T23:42:57.9621976Z             {
2026-06-21T23:42:57.9622082Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-21T23:42:57.9622175Z               "line": 494
2026-06-21T23:42:57.9622251Z             }
2026-06-21T23:42:57.9622342Z           ]
2026-06-21T23:42:57.9622418Z         }
2026-06-21T23:42:57.9622513Z       }
2026-06-21T23:42:57.9622613Z     },
2026-06-21T23:42:57.9622695Z     {
2026-06-21T23:42:57.9622800Z       "id": "REQ-NODE-IDENTITY",
2026-06-21T23:42:57.9623029Z       "title": "Ed25519 identity primitive: keypair, detached sign/verify, stable pubkey<->hex",
2026-06-21T23:42:57.9623134Z       "requiredStages": [
2026-06-21T23:42:57.9623219Z         "impl",
2026-06-21T23:42:57.9623315Z         "unit"
2026-06-21T23:42:57.9623400Z       ],
2026-06-21T23:42:57.9623486Z       "stages": {
2026-06-21T23:42:57.9623576Z         "doc": {
2026-06-21T23:42:57.9623669Z           "complete": false,
2026-06-21T23:42:57.9623767Z           "evidence": []
2026-06-21T23:42:57.9623848Z         },
2026-06-21T23:42:57.9623944Z         "impl": {
2026-06-21T23:42:57.9624044Z           "complete": true,
2026-06-21T23:42:57.9624120Z           "evidence": [
2026-06-21T23:42:57.9624206Z             {
2026-06-21T23:42:57.9624322Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T23:42:57.9624410Z               "line": 60
2026-06-21T23:42:57.9624497Z             },
2026-06-21T23:42:57.9624588Z             {
2026-06-21T23:42:57.9624707Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T23:42:57.9624792Z               "line": 68
2026-06-21T23:42:57.9624877Z             },
2026-06-21T23:42:57.9624959Z             {
2026-06-21T23:42:57.9625087Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T23:42:57.9625307Z               "line": 86
2026-06-21T23:42:57.9625388Z             },
2026-06-21T23:42:57.9625477Z             {
2026-06-21T23:42:57.9625584Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T23:42:57.9625674Z               "line": 120
2026-06-21T23:42:57.9625750Z             },
2026-06-21T23:42:57.9625841Z             {
2026-06-21T23:42:57.9625955Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T23:42:57.9626046Z               "line": 127
2026-06-21T23:42:57.9626136Z             },
2026-06-21T23:42:57.9626219Z             {
2026-06-21T23:42:57.9626341Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T23:42:57.9626514Z               "line": 143
2026-06-21T23:42:57.9626599Z             },
2026-06-21T23:42:57.9626684Z             {
2026-06-21T23:42:57.9626799Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-21T23:42:57.9626886Z               "line": 16
2026-06-21T23:42:57.9626980Z             }
2026-06-21T23:42:57.9627070Z           ]
2026-06-21T23:42:57.9627141Z         },
2026-06-21T23:42:57.9627227Z         "int": {
2026-06-21T23:42:57.9627311Z           "complete": false,
2026-06-21T23:42:57.9627405Z           "evidence": []
2026-06-21T23:42:57.9627497Z         },
2026-06-21T23:42:57.9627578Z         "unit": {
2026-06-21T23:42:57.9627678Z           "complete": true,
2026-06-21T23:42:57.9627768Z           "evidence": [
2026-06-21T23:42:57.9627855Z             {
2026-06-21T23:42:57.9627964Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T23:42:57.9628059Z               "line": 199
2026-06-21T23:42:57.9628146Z             },
2026-06-21T23:42:57.9628231Z             {
2026-06-21T23:42:57.9628340Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T23:42:57.9628427Z               "line": 218
2026-06-21T23:42:57.9628513Z             },
2026-06-21T23:42:57.9628589Z             {
2026-06-21T23:42:57.9628708Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T23:42:57.9628799Z               "line": 234
2026-06-21T23:42:57.9628889Z             },
2026-06-21T23:42:57.9629061Z             {
2026-06-21T23:42:57.9629171Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-21T23:42:57.9629276Z               "line": 256
2026-06-21T23:42:57.9629357Z             },
2026-06-21T23:42:57.9629443Z             {
2026-06-21T23:42:57.9629565Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-21T23:42:57.9629642Z               "line": 124
2026-06-21T23:42:57.9629729Z             },
2026-06-21T23:42:57.9629810Z             {
2026-06-21T23:42:57.9629927Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-21T23:42:57.9630023Z               "line": 140
2026-06-21T23:42:57.9630108Z             },
2026-06-21T23:42:57.9630202Z             {
2026-06-21T23:42:57.9630311Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-21T23:42:57.9630407Z               "line": 155
2026-06-21T23:42:57.9630503Z             }
2026-06-21T23:42:57.9630587Z           ]
2026-06-21T23:42:57.9630679Z         }
2026-06-21T23:42:57.9630765Z       }
2026-06-21T23:42:57.9630850Z     },
2026-06-21T23:42:57.9630931Z     {
2026-06-21T23:42:57.9631022Z       "id": "REQ-NOTIF-1",
2026-06-21T23:42:57.9631380Z       "title": "Notification primitive: per-subnet replicated spool, seen/dismissed, resurface-at-boundary, subsumes update+consent prompts",
2026-06-21T23:42:57.9631480Z       "requiredStages": [
2026-06-21T23:42:57.9631575Z         "impl",
2026-06-21T23:42:57.9631662Z         "unit",
2026-06-21T23:42:57.9631751Z         "int"
2026-06-21T23:42:57.9631832Z       ],
2026-06-21T23:42:57.9631923Z       "stages": {
2026-06-21T23:42:57.9632015Z         "doc": {
2026-06-21T23:42:57.9632108Z           "complete": false,
2026-06-21T23:42:57.9632204Z           "evidence": []
2026-06-21T23:42:57.9632272Z         },
2026-06-21T23:42:57.9632353Z         "impl": {
2026-06-21T23:42:57.9632442Z           "complete": true,
2026-06-21T23:42:57.9632632Z           "evidence": [
2026-06-21T23:42:57.9632717Z             {
2026-06-21T23:42:57.9632840Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T23:42:57.9632935Z               "line": 514
2026-06-21T23:42:57.9633022Z             },
2026-06-21T23:42:57.9633107Z             {
2026-06-21T23:42:57.9633221Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T23:42:57.9633312Z               "line": 30
2026-06-21T23:42:57.9633389Z             },
2026-06-21T23:42:57.9633478Z             {
2026-06-21T23:42:57.9633585Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T23:42:57.9633670Z               "line": 69
2026-06-21T23:42:57.9633851Z             },
2026-06-21T23:42:57.9633933Z             {
2026-06-21T23:42:57.9634051Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T23:42:57.9634132Z               "line": 93
2026-06-21T23:42:57.9634219Z             },
2026-06-21T23:42:57.9634308Z             {
2026-06-21T23:42:57.9634413Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T23:42:57.9634514Z               "line": 107
2026-06-21T23:42:57.9634595Z             },
2026-06-21T23:42:57.9634685Z             {
2026-06-21T23:42:57.9634790Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T23:42:57.9634882Z               "line": 142
2026-06-21T23:42:57.9634970Z             },
2026-06-21T23:42:57.9635047Z             {
2026-06-21T23:42:57.9635158Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T23:42:57.9635248Z               "line": 187
2026-06-21T23:42:57.9635333Z             },
2026-06-21T23:42:57.9635413Z             {
2026-06-21T23:42:57.9635519Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T23:42:57.9635619Z               "line": 258
2026-06-21T23:42:57.9635695Z             },
2026-06-21T23:42:57.9635785Z             {
2026-06-21T23:42:57.9635896Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T23:42:57.9635990Z               "line": 372
2026-06-21T23:42:57.9636071Z             },
2026-06-21T23:42:57.9636163Z             {
2026-06-21T23:42:57.9636277Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T23:42:57.9636371Z               "line": 479
2026-06-21T23:42:57.9636459Z             },
2026-06-21T23:42:57.9636544Z             {
2026-06-21T23:42:57.9636672Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T23:42:57.9636769Z               "line": 24
2026-06-21T23:42:57.9636854Z             },
2026-06-21T23:42:57.9636944Z             {
2026-06-21T23:42:57.9637064Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T23:42:57.9637169Z               "line": 34
2026-06-21T23:42:57.9637258Z             },
2026-06-21T23:42:57.9637350Z             {
2026-06-21T23:42:57.9637460Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T23:42:57.9637549Z               "line": 60
2026-06-21T23:42:57.9637639Z             },
2026-06-21T23:42:57.9637725Z             {
2026-06-21T23:42:57.9637843Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T23:42:57.9637932Z               "line": 82
2026-06-21T23:42:57.9638013Z             },
2026-06-21T23:42:57.9638095Z             {
2026-06-21T23:42:57.9638214Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T23:42:57.9638309Z               "line": 94
2026-06-21T23:42:57.9638395Z             },
2026-06-21T23:42:57.9638481Z             {
2026-06-21T23:42:57.9638590Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T23:42:57.9638687Z               "line": 96
2026-06-21T23:42:57.9638772Z             },
2026-06-21T23:42:57.9638853Z             {
2026-06-21T23:42:57.9639077Z               "path": "crates/spt-daemon/src/pump/notif.rs",
2026-06-21T23:42:57.9639163Z               "line": 44
2026-06-21T23:42:57.9639253Z             },
2026-06-21T23:42:57.9639340Z             {
2026-06-21T23:42:57.9639463Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T23:42:57.9639558Z               "line": 20
2026-06-21T23:42:57.9639745Z             },
2026-06-21T23:42:57.9639826Z             {
2026-06-21T23:42:57.9639941Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T23:42:57.9640032Z               "line": 30
2026-06-21T23:42:57.9640116Z             },
2026-06-21T23:42:57.9640202Z             {
2026-06-21T23:42:57.9640323Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T23:42:57.9640407Z               "line": 50
2026-06-21T23:42:57.9640492Z             },
2026-06-21T23:42:57.9640573Z             {
2026-06-21T23:42:57.9640692Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T23:42:57.9640776Z               "line": 28
2026-06-21T23:42:57.9640957Z             },
2026-06-21T23:42:57.9641044Z             {
2026-06-21T23:42:57.9641147Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T23:42:57.9641244Z               "line": 126
2026-06-21T23:42:57.9641325Z             },
2026-06-21T23:42:57.9641410Z             {
2026-06-21T23:42:57.9641515Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T23:42:57.9641616Z               "line": 161
2026-06-21T23:42:57.9641702Z             },
2026-06-21T23:42:57.9641786Z             {
2026-06-21T23:42:57.9641897Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T23:42:57.9641987Z               "line": 202
2026-06-21T23:42:57.9642073Z             },
2026-06-21T23:42:57.9642154Z             {
2026-06-21T23:42:57.9642269Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T23:42:57.9642358Z               "line": 213
2026-06-21T23:42:57.9642440Z             },
2026-06-21T23:42:57.9642527Z             {
2026-06-21T23:42:57.9642636Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T23:42:57.9642740Z               "line": 238
2026-06-21T23:42:57.9642818Z             },
2026-06-21T23:42:57.9642894Z             {
2026-06-21T23:42:57.9643007Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T23:42:57.9643092Z               "line": 261
2026-06-21T23:42:57.9643183Z             },
2026-06-21T23:42:57.9643273Z             {
2026-06-21T23:42:57.9643395Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:42:57.9643490Z               "line": 86
2026-06-21T23:42:57.9643567Z             }
2026-06-21T23:42:57.9643653Z           ]
2026-06-21T23:42:57.9643738Z         },
2026-06-21T23:42:57.9643825Z         "int": {
2026-06-21T23:42:57.9643915Z           "complete": true,
2026-06-21T23:42:57.9644014Z           "evidence": [
2026-06-21T23:42:57.9644101Z             {
2026-06-21T23:42:57.9644220Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T23:42:57.9644306Z               "line": 285
2026-06-21T23:42:57.9644396Z             },
2026-06-21T23:42:57.9644483Z             {
2026-06-21T23:42:57.9644597Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-21T23:42:57.9644678Z               "line": 145
2026-06-21T23:42:57.9644764Z             },
2026-06-21T23:42:57.9644850Z             {
2026-06-21T23:42:57.9644978Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T23:42:57.9645065Z               "line": 684
2026-06-21T23:42:57.9645160Z             },
2026-06-21T23:42:57.9645240Z             {
2026-06-21T23:42:57.9645365Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T23:42:57.9645461Z               "line": 1102
2026-06-21T23:42:57.9645540Z             }
2026-06-21T23:42:57.9645631Z           ]
2026-06-21T23:42:57.9645704Z         },
2026-06-21T23:42:57.9645795Z         "unit": {
2026-06-21T23:42:57.9645888Z           "complete": true,
2026-06-21T23:42:57.9645982Z           "evidence": [
2026-06-21T23:42:57.9646074Z             {
2026-06-21T23:42:57.9646193Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T23:42:57.9646288Z               "line": 572
2026-06-21T23:42:57.9646370Z             },
2026-06-21T23:42:57.9646465Z             {
2026-06-21T23:42:57.9646574Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T23:42:57.9646675Z               "line": 636
2026-06-21T23:42:57.9647099Z             },
2026-06-21T23:42:57.9647185Z             {
2026-06-21T23:42:57.9647295Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T23:42:57.9647390Z               "line": 740
2026-06-21T23:42:57.9647485Z             },
2026-06-21T23:42:57.9647562Z             {
2026-06-21T23:42:57.9647677Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T23:42:57.9647762Z               "line": 772
2026-06-21T23:42:57.9647847Z             },
2026-06-21T23:42:57.9647934Z             {
2026-06-21T23:42:57.9648039Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T23:42:57.9648129Z               "line": 840
2026-06-21T23:42:57.9648285Z             },
2026-06-21T23:42:57.9648375Z             {
2026-06-21T23:42:57.9648484Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T23:42:57.9648564Z               "line": 898
2026-06-21T23:42:57.9648650Z             },
2026-06-21T23:42:57.9648732Z             {
2026-06-21T23:42:57.9648854Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T23:42:57.9649032Z               "line": 1173
2026-06-21T23:42:57.9649112Z             },
2026-06-21T23:42:57.9649193Z             {
2026-06-21T23:42:57.9649304Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T23:42:57.9649389Z               "line": 157
2026-06-21T23:42:57.9649461Z             },
2026-06-21T23:42:57.9649557Z             {
2026-06-21T23:42:57.9649676Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T23:42:57.9649766Z               "line": 250
2026-06-21T23:42:57.9649847Z             },
2026-06-21T23:42:57.9649929Z             {
2026-06-21T23:42:57.9650057Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-21T23:42:57.9650137Z               "line": 273
2026-06-21T23:42:57.9650225Z             },
2026-06-21T23:42:57.9650314Z             {
2026-06-21T23:42:57.9650434Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T23:42:57.9650535Z               "line": 355
2026-06-21T23:42:57.9650615Z             },
2026-06-21T23:42:57.9650691Z             {
2026-06-21T23:42:57.9650811Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-21T23:42:57.9650907Z               "line": 392
2026-06-21T23:42:57.9650986Z             },
2026-06-21T23:42:57.9651071Z             {
2026-06-21T23:42:57.9651205Z               "path": "crates/spt-daemon/tests/notifsync.rs",
2026-06-21T23:42:57.9651289Z               "line": 131
2026-06-21T23:42:57.9651374Z             },
2026-06-21T23:42:57.9651455Z             {
2026-06-21T23:42:57.9651585Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T23:42:57.9651684Z               "line": 72
2026-06-21T23:42:57.9651765Z             },
2026-06-21T23:42:57.9651842Z             {
2026-06-21T23:42:57.9651956Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-21T23:42:57.9652051Z               "line": 97
2026-06-21T23:42:57.9652133Z             },
2026-06-21T23:42:57.9652224Z             {
2026-06-21T23:42:57.9652342Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T23:42:57.9652428Z               "line": 379
2026-06-21T23:42:57.9652515Z             },
2026-06-21T23:42:57.9652600Z             {
2026-06-21T23:42:57.9652719Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T23:42:57.9652806Z               "line": 417
2026-06-21T23:42:57.9652891Z             },
2026-06-21T23:42:57.9652976Z             {
2026-06-21T23:42:57.9653088Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T23:42:57.9653173Z               "line": 433
2026-06-21T23:42:57.9653257Z             },
2026-06-21T23:42:57.9653344Z             {
2026-06-21T23:42:57.9653450Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T23:42:57.9653553Z               "line": 472
2026-06-21T23:42:57.9653638Z             },
2026-06-21T23:42:57.9653714Z             {
2026-06-21T23:42:57.9653823Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T23:42:57.9654022Z               "line": 489
2026-06-21T23:42:57.9654109Z             },
2026-06-21T23:42:57.9654199Z             {
2026-06-21T23:42:57.9654303Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T23:42:57.9654395Z               "line": 517
2026-06-21T23:42:57.9654480Z             },
2026-06-21T23:42:57.9654560Z             {
2026-06-21T23:42:57.9654671Z               "path": "crates/spt-store/src/notif.rs",
2026-06-21T23:42:57.9654762Z               "line": 548
2026-06-21T23:42:57.9654843Z             },
2026-06-21T23:42:57.9654927Z             {
2026-06-21T23:42:57.9655048Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:42:57.9655228Z               "line": 745
2026-06-21T23:42:57.9655310Z             }
2026-06-21T23:42:57.9655396Z           ]
2026-06-21T23:42:57.9655486Z         }
2026-06-21T23:42:57.9655572Z       }
2026-06-21T23:42:57.9655658Z     },
2026-06-21T23:42:57.9655739Z     {
2026-06-21T23:42:57.9655834Z       "id": "REQ-NOTIF-2",
2026-06-21T23:42:57.9656101Z       "title": "spt notify (agent-issued subnet notif) + notif_command manifest seam (harness + shell adapters)",
2026-06-21T23:42:57.9656206Z       "requiredStages": [
2026-06-21T23:42:57.9656293Z         "doc",
2026-06-21T23:42:57.9656378Z         "impl",
2026-06-21T23:42:57.9656453Z         "unit",
2026-06-21T23:42:57.9656543Z         "int"
2026-06-21T23:42:57.9656625Z       ],
2026-06-21T23:42:57.9656712Z       "stages": {
2026-06-21T23:42:57.9656800Z         "doc": {
2026-06-21T23:42:57.9656896Z           "complete": true,
2026-06-21T23:42:57.9656987Z           "evidence": [
2026-06-21T23:42:57.9657073Z             {
2026-06-21T23:42:57.9657177Z               "path": "CONTEXT.md",
2026-06-21T23:42:57.9657269Z               "line": 509
2026-06-21T23:42:57.9657354Z             },
2026-06-21T23:42:57.9657439Z             {
2026-06-21T23:42:57.9657545Z               "path": "docs/MANIFEST.md",
2026-06-21T23:42:57.9657627Z               "line": 123
2026-06-21T23:42:57.9657707Z             }
2026-06-21T23:42:57.9657797Z           ]
2026-06-21T23:42:57.9657879Z         },
2026-06-21T23:42:57.9657969Z         "impl": {
2026-06-21T23:42:57.9658050Z           "complete": true,
2026-06-21T23:42:57.9658145Z           "evidence": [
2026-06-21T23:42:57.9658223Z             {
2026-06-21T23:42:57.9658326Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T23:42:57.9658412Z               "line": 287
2026-06-21T23:42:57.9658499Z             },
2026-06-21T23:42:57.9658581Z             {
2026-06-21T23:42:57.9658693Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T23:42:57.9658788Z               "line": 301
2026-06-21T23:42:57.9658874Z             },
2026-06-21T23:42:57.9659048Z             {
2026-06-21T23:42:57.9659158Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T23:42:57.9659244Z               "line": 326
2026-06-21T23:42:57.9659325Z             },
2026-06-21T23:42:57.9659401Z             {
2026-06-21T23:42:57.9659521Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:42:57.9659621Z               "line": 239
2026-06-21T23:42:57.9659706Z             },
2026-06-21T23:42:57.9659787Z             {
2026-06-21T23:42:57.9659897Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:42:57.9659977Z               "line": 95
2026-06-21T23:42:57.9660063Z             },
2026-06-21T23:42:57.9660151Z             {
2026-06-21T23:42:57.9660260Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9660345Z               "line": 2225
2026-06-21T23:42:57.9660431Z             },
2026-06-21T23:42:57.9660512Z             {
2026-06-21T23:42:57.9660621Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9660702Z               "line": 2274
2026-06-21T23:42:57.9660795Z             },
2026-06-21T23:42:57.9660884Z             {
2026-06-21T23:42:57.9660984Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9661071Z               "line": 2353
2026-06-21T23:42:57.9661156Z             },
2026-06-21T23:42:57.9661246Z             {
2026-06-21T23:42:57.9661453Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9661546Z               "line": 2392
2026-06-21T23:42:57.9661626Z             }
2026-06-21T23:42:57.9661707Z           ]
2026-06-21T23:42:57.9661798Z         },
2026-06-21T23:42:57.9661882Z         "int": {
2026-06-21T23:42:57.9661972Z           "complete": true,
2026-06-21T23:42:57.9662059Z           "evidence": [
2026-06-21T23:42:57.9662140Z             {
2026-06-21T23:42:57.9662254Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T23:42:57.9662344Z               "line": 810
2026-06-21T23:42:57.9662431Z             },
2026-06-21T23:42:57.9662597Z             {
2026-06-21T23:42:57.9662722Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T23:42:57.9662807Z               "line": 1345
2026-06-21T23:42:57.9662897Z             }
2026-06-21T23:42:57.9662983Z           ]
2026-06-21T23:42:57.9663070Z         },
2026-06-21T23:42:57.9663160Z         "unit": {
2026-06-21T23:42:57.9663255Z           "complete": true,
2026-06-21T23:42:57.9663352Z           "evidence": [
2026-06-21T23:42:57.9663427Z             {
2026-06-21T23:42:57.9663541Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T23:42:57.9663628Z               "line": 1022
2026-06-21T23:42:57.9663709Z             },
2026-06-21T23:42:57.9663794Z             {
2026-06-21T23:42:57.9663909Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T23:42:57.9664000Z               "line": 1090
2026-06-21T23:42:57.9664085Z             },
2026-06-21T23:42:57.9664174Z             {
2026-06-21T23:42:57.9664284Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9664369Z               "line": 8210
2026-06-21T23:42:57.9664454Z             },
2026-06-21T23:42:57.9664524Z             {
2026-06-21T23:42:57.9664630Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9664712Z               "line": 8265
2026-06-21T23:42:57.9664797Z             }
2026-06-21T23:42:57.9664882Z           ]
2026-06-21T23:42:57.9664964Z         }
2026-06-21T23:42:57.9665050Z       }
2026-06-21T23:42:57.9665135Z     },
2026-06-21T23:42:57.9665216Z     {
2026-06-21T23:42:57.9665312Z       "id": "REQ-PAIR-1",
2026-06-21T23:42:57.9665431Z       "title": "TOTP-seeded SPAKE2 pairing",
2026-06-21T23:42:57.9665526Z       "requiredStages": [
2026-06-21T23:42:57.9665608Z         "impl",
2026-06-21T23:42:57.9665698Z         "unit",
2026-06-21T23:42:57.9665783Z         "int"
2026-06-21T23:42:57.9665870Z       ],
2026-06-21T23:42:57.9665956Z       "stages": {
2026-06-21T23:42:57.9666042Z         "doc": {
2026-06-21T23:42:57.9666146Z           "complete": false,
2026-06-21T23:42:57.9666233Z           "evidence": []
2026-06-21T23:42:57.9666318Z         },
2026-06-21T23:42:57.9666404Z         "impl": {
2026-06-21T23:42:57.9666500Z           "complete": true,
2026-06-21T23:42:57.9666586Z           "evidence": [
2026-06-21T23:42:57.9666680Z             {
2026-06-21T23:42:57.9666805Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T23:42:57.9666882Z               "line": 27
2026-06-21T23:42:57.9667099Z             },
2026-06-21T23:42:57.9667185Z             {
2026-06-21T23:42:57.9667309Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T23:42:57.9667389Z               "line": 88
2026-06-21T23:42:57.9667481Z             },
2026-06-21T23:42:57.9667566Z             {
2026-06-21T23:42:57.9667704Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T23:42:57.9667805Z               "line": 110
2026-06-21T23:42:57.9667891Z             },
2026-06-21T23:42:57.9667981Z             {
2026-06-21T23:42:57.9668100Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T23:42:57.9668201Z               "line": 153
2026-06-21T23:42:57.9668287Z             },
2026-06-21T23:42:57.9668362Z             {
2026-06-21T23:42:57.9668497Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T23:42:57.9668581Z               "line": 182
2026-06-21T23:42:57.9668755Z             },
2026-06-21T23:42:57.9668840Z             {
2026-06-21T23:42:57.9669044Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T23:42:57.9669146Z               "line": 29
2026-06-21T23:42:57.9669225Z             },
2026-06-21T23:42:57.9669310Z             {
2026-06-21T23:42:57.9669453Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-21T23:42:57.9669542Z               "line": 31
2026-06-21T23:42:57.9669628Z             },
2026-06-21T23:42:57.9669713Z             {
2026-06-21T23:42:57.9669843Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T23:42:57.9670023Z               "line": 44
2026-06-21T23:42:57.9670114Z             },
2026-06-21T23:42:57.9673611Z             {
2026-06-21T23:42:57.9673787Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T23:42:57.9673883Z               "line": 171
2026-06-21T23:42:57.9673959Z             },
2026-06-21T23:42:57.9674044Z             {
2026-06-21T23:42:57.9674183Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T23:42:57.9674283Z               "line": 376
2026-06-21T23:42:57.9674363Z             }
2026-06-21T23:42:57.9674445Z           ]
2026-06-21T23:42:57.9674532Z         },
2026-06-21T23:42:57.9674617Z         "int": {
2026-06-21T23:42:57.9674716Z           "complete": true,
2026-06-21T23:42:57.9674801Z           "evidence": [
2026-06-21T23:42:57.9674878Z             {
2026-06-21T23:42:57.9675009Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T23:42:57.9675104Z               "line": 645
2026-06-21T23:42:57.9675186Z             },
2026-06-21T23:42:57.9675277Z             {
2026-06-21T23:42:57.9675413Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T23:42:57.9675501Z               "line": 887
2026-06-21T23:42:57.9675591Z             }
2026-06-21T23:42:57.9675671Z           ]
2026-06-21T23:42:57.9675757Z         },
2026-06-21T23:42:57.9675844Z         "unit": {
2026-06-21T23:42:57.9675934Z           "complete": true,
2026-06-21T23:42:57.9676029Z           "evidence": [
2026-06-21T23:42:57.9676111Z             {
2026-06-21T23:42:57.9676249Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T23:42:57.9676339Z               "line": 236
2026-06-21T23:42:57.9676425Z             },
2026-06-21T23:42:57.9676516Z             {
2026-06-21T23:42:57.9676640Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-21T23:42:57.9676730Z               "line": 349
2026-06-21T23:42:57.9676817Z             },
2026-06-21T23:42:57.9676906Z             {
2026-06-21T23:42:57.9677021Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T23:42:57.9677117Z               "line": 194
2026-06-21T23:42:57.9677202Z             },
2026-06-21T23:42:57.9677284Z             {
2026-06-21T23:42:57.9677409Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T23:42:57.9677489Z               "line": 216
2026-06-21T23:42:57.9677573Z             },
2026-06-21T23:42:57.9677663Z             {
2026-06-21T23:42:57.9677779Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T23:42:57.9677869Z               "line": 230
2026-06-21T23:42:57.9677954Z             },
2026-06-21T23:42:57.9678041Z             {
2026-06-21T23:42:57.9678165Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T23:42:57.9678250Z               "line": 242
2026-06-21T23:42:57.9678336Z             },
2026-06-21T23:42:57.9678423Z             {
2026-06-21T23:42:57.9678546Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T23:42:57.9678636Z               "line": 256
2026-06-21T23:42:57.9678728Z             },
2026-06-21T23:42:57.9678808Z             {
2026-06-21T23:42:57.9679033Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T23:42:57.9679127Z               "line": 270
2026-06-21T23:42:57.9679208Z             },
2026-06-21T23:42:57.9679300Z             {
2026-06-21T23:42:57.9679556Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T23:42:57.9679653Z               "line": 277
2026-06-21T23:42:57.9679739Z             },
2026-06-21T23:42:57.9679823Z             {
2026-06-21T23:42:57.9679952Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-21T23:42:57.9680028Z               "line": 295
2026-06-21T23:42:57.9680116Z             },
2026-06-21T23:42:57.9680197Z             {
2026-06-21T23:42:57.9680326Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T23:42:57.9680408Z               "line": 968
2026-06-21T23:42:57.9680492Z             },
2026-06-21T23:42:57.9680578Z             {
2026-06-21T23:42:57.9680812Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T23:42:57.9680908Z               "line": 1051
2026-06-21T23:42:57.9680989Z             },
2026-06-21T23:42:57.9681070Z             {
2026-06-21T23:42:57.9681189Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T23:42:57.9681280Z               "line": 1121
2026-06-21T23:42:57.9681356Z             },
2026-06-21T23:42:57.9681436Z             {
2026-06-21T23:42:57.9681561Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T23:42:57.9681647Z               "line": 1182
2026-06-21T23:42:57.9681742Z             },
2026-06-21T23:42:57.9681828Z             {
2026-06-21T23:42:57.9681948Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T23:42:57.9682042Z               "line": 1238
2026-06-21T23:42:57.9682123Z             },
2026-06-21T23:42:57.9682210Z             {
2026-06-21T23:42:57.9682333Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T23:42:57.9682424Z               "line": 1457
2026-06-21T23:42:57.9682516Z             }
2026-06-21T23:42:57.9682597Z           ]
2026-06-21T23:42:57.9682685Z         }
2026-06-21T23:42:57.9682766Z       }
2026-06-21T23:42:57.9682857Z     },
2026-06-21T23:42:57.9682942Z     {
2026-06-21T23:42:57.9683031Z       "id": "REQ-PAIR-2",
2026-06-21T23:42:57.9683179Z       "title": "Local trust store with TOFU + warn-on-change",
2026-06-21T23:42:57.9683270Z       "requiredStages": [],
2026-06-21T23:42:57.9683359Z       "stages": {
2026-06-21T23:42:57.9683440Z         "doc": {
2026-06-21T23:42:57.9683532Z           "complete": false,
2026-06-21T23:42:57.9683613Z           "evidence": []
2026-06-21T23:42:57.9683698Z         },
2026-06-21T23:42:57.9683785Z         "impl": {
2026-06-21T23:42:57.9683875Z           "complete": false,
2026-06-21T23:42:57.9683975Z           "evidence": []
2026-06-21T23:42:57.9684046Z         },
2026-06-21T23:42:57.9684138Z         "int": {
2026-06-21T23:42:57.9684227Z           "complete": false,
2026-06-21T23:42:57.9684318Z           "evidence": []
2026-06-21T23:42:57.9684399Z         },
2026-06-21T23:42:57.9684486Z         "unit": {
2026-06-21T23:42:57.9684585Z           "complete": false,
2026-06-21T23:42:57.9684676Z           "evidence": []
2026-06-21T23:42:57.9684758Z         }
2026-06-21T23:42:57.9684857Z       }
2026-06-21T23:42:57.9684938Z     },
2026-06-21T23:42:57.9685024Z     {
2026-06-21T23:42:57.9685116Z       "id": "REQ-PAIR-3",
2026-06-21T23:42:57.9685271Z       "title": "Fetch current pairing code from any paired node",
2026-06-21T23:42:57.9685366Z       "requiredStages": [
2026-06-21T23:42:57.9685485Z         "impl",
2026-06-21T23:42:57.9685574Z         "unit"
2026-06-21T23:42:57.9685659Z       ],
2026-06-21T23:42:57.9685746Z       "stages": {
2026-06-21T23:42:57.9685832Z         "doc": {
2026-06-21T23:42:57.9685926Z           "complete": false,
2026-06-21T23:42:57.9686017Z           "evidence": []
2026-06-21T23:42:57.9686108Z         },
2026-06-21T23:42:57.9686194Z         "impl": {
2026-06-21T23:42:57.9686293Z           "complete": true,
2026-06-21T23:42:57.9686385Z           "evidence": [
2026-06-21T23:42:57.9686475Z             {
2026-06-21T23:42:57.9686589Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9686676Z               "line": 3259
2026-06-21T23:42:57.9686852Z             },
2026-06-21T23:42:57.9686932Z             {
2026-06-21T23:42:57.9687043Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9687143Z               "line": 3328
2026-06-21T23:42:57.9687224Z             },
2026-06-21T23:42:57.9687310Z             {
2026-06-21T23:42:57.9687414Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9687510Z               "line": 3709
2026-06-21T23:42:57.9687596Z             },
2026-06-21T23:42:57.9687678Z             {
2026-06-21T23:42:57.9687781Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9687872Z               "line": 4961
2026-06-21T23:42:57.9687954Z             }
2026-06-21T23:42:57.9688114Z           ]
2026-06-21T23:42:57.9688199Z         },
2026-06-21T23:42:57.9688286Z         "int": {
2026-06-21T23:42:57.9688382Z           "complete": false,
2026-06-21T23:42:57.9688467Z           "evidence": []
2026-06-21T23:42:57.9688553Z         },
2026-06-21T23:42:57.9688634Z         "unit": {
2026-06-21T23:42:57.9688725Z           "complete": true,
2026-06-21T23:42:57.9688824Z           "evidence": [
2026-06-21T23:42:57.9688901Z             {
2026-06-21T23:42:57.9689078Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9689167Z               "line": 9964
2026-06-21T23:42:57.9689250Z             },
2026-06-21T23:42:57.9689335Z             {
2026-06-21T23:42:57.9689440Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9689540Z               "line": 10179
2026-06-21T23:42:57.9689622Z             },
2026-06-21T23:42:57.9689706Z             {
2026-06-21T23:42:57.9689816Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9689899Z               "line": 10838
2026-06-21T23:42:57.9689984Z             },
2026-06-21T23:42:57.9690059Z             {
2026-06-21T23:42:57.9690165Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9690252Z               "line": 10857
2026-06-21T23:42:57.9690336Z             },
2026-06-21T23:42:57.9690426Z             {
2026-06-21T23:42:57.9690531Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9690625Z               "line": 10881
2026-06-21T23:42:57.9690709Z             },
2026-06-21T23:42:57.9690790Z             {
2026-06-21T23:42:57.9690886Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9690968Z               "line": 10900
2026-06-21T23:42:57.9691057Z             },
2026-06-21T23:42:57.9691143Z             {
2026-06-21T23:42:57.9691244Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9691330Z               "line": 10913
2026-06-21T23:42:57.9691415Z             },
2026-06-21T23:42:57.9691487Z             {
2026-06-21T23:42:57.9691582Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9691677Z               "line": 10922
2026-06-21T23:42:57.9691758Z             }
2026-06-21T23:42:57.9691840Z           ]
2026-06-21T23:42:57.9691925Z         }
2026-06-21T23:42:57.9692011Z       }
2026-06-21T23:42:57.9692092Z     },
2026-06-21T23:42:57.9692174Z     {
2026-06-21T23:42:57.9692274Z       "id": "REQ-PAIR-4",
2026-06-21T23:42:57.9692388Z       "title": "Subnet naming on first pairing",
2026-06-21T23:42:57.9692484Z       "requiredStages": [
2026-06-21T23:42:57.9692569Z         "impl",
2026-06-21T23:42:57.9692655Z         "unit"
2026-06-21T23:42:57.9692737Z       ],
2026-06-21T23:42:57.9692823Z       "stages": {
2026-06-21T23:42:57.9692907Z         "doc": {
2026-06-21T23:42:57.9692989Z           "complete": false,
2026-06-21T23:42:57.9693081Z           "evidence": []
2026-06-21T23:42:57.9693166Z         },
2026-06-21T23:42:57.9693245Z         "impl": {
2026-06-21T23:42:57.9693331Z           "complete": true,
2026-06-21T23:42:57.9693426Z           "evidence": [
2026-06-21T23:42:57.9693516Z             {
2026-06-21T23:42:57.9693629Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-21T23:42:57.9693720Z               "line": 174
2026-06-21T23:42:57.9693806Z             }
2026-06-21T23:42:57.9693891Z           ]
2026-06-21T23:42:57.9693972Z         },
2026-06-21T23:42:57.9694169Z         "int": {
2026-06-21T23:42:57.9694258Z           "complete": false,
2026-06-21T23:42:57.9694340Z           "evidence": []
2026-06-21T23:42:57.9694431Z         },
2026-06-21T23:42:57.9694517Z         "unit": {
2026-06-21T23:42:57.9694611Z           "complete": true,
2026-06-21T23:42:57.9694698Z           "evidence": [
2026-06-21T23:42:57.9694788Z             {
2026-06-21T23:42:57.9694916Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T23:42:57.9694998Z               "line": 1294
2026-06-21T23:42:57.9695089Z             }
2026-06-21T23:42:57.9695174Z           ]
2026-06-21T23:42:57.9695255Z         }
2026-06-21T23:42:57.9695431Z       }
2026-06-21T23:42:57.9695512Z     },
2026-06-21T23:42:57.9695599Z     {
2026-06-21T23:42:57.9695691Z       "id": "REQ-PAIR-5",
2026-06-21T23:42:57.9696003Z       "title": "Multi-subnet pairing: subnet-name discovery input, create-new-names-up-front, rendezvous-token hashing",
2026-06-21T23:42:57.9696096Z       "requiredStages": [
2026-06-21T23:42:57.9696191Z         "impl",
2026-06-21T23:42:57.9696277Z         "unit",
2026-06-21T23:42:57.9696363Z         "int"
2026-06-21T23:42:57.9696453Z       ],
2026-06-21T23:42:57.9696538Z       "stages": {
2026-06-21T23:42:57.9696636Z         "doc": {
2026-06-21T23:42:57.9696726Z           "complete": false,
2026-06-21T23:42:57.9696820Z           "evidence": []
2026-06-21T23:42:57.9696902Z         },
2026-06-21T23:42:57.9696992Z         "impl": {
2026-06-21T23:42:57.9697088Z           "complete": true,
2026-06-21T23:42:57.9697168Z           "evidence": [
2026-06-21T23:42:57.9697260Z             {
2026-06-21T23:42:57.9697383Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T23:42:57.9697488Z               "line": 44
2026-06-21T23:42:57.9697565Z             },
2026-06-21T23:42:57.9697645Z             {
2026-06-21T23:42:57.9697774Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T23:42:57.9697856Z               "line": 96
2026-06-21T23:42:57.9697946Z             },
2026-06-21T23:42:57.9698026Z             {
2026-06-21T23:42:57.9698151Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T23:42:57.9698234Z               "line": 107
2026-06-21T23:42:57.9698317Z             },
2026-06-21T23:42:57.9698404Z             {
2026-06-21T23:42:57.9698519Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T23:42:57.9698614Z               "line": 124
2026-06-21T23:42:57.9698694Z             },
2026-06-21T23:42:57.9698783Z             {
2026-06-21T23:42:57.9698899Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T23:42:57.9699079Z               "line": 155
2026-06-21T23:42:57.9699171Z             },
2026-06-21T23:42:57.9699247Z             {
2026-06-21T23:42:57.9699375Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T23:42:57.9699466Z               "line": 195
2026-06-21T23:42:57.9699552Z             },
2026-06-21T23:42:57.9699638Z             {
2026-06-21T23:42:57.9699776Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T23:42:57.9699862Z               "line": 251
2026-06-21T23:42:57.9699947Z             },
2026-06-21T23:42:57.9700033Z             {
2026-06-21T23:42:57.9700177Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T23:42:57.9700262Z               "line": 33
2026-06-21T23:42:57.9700343Z             },
2026-06-21T23:42:57.9700415Z             {
2026-06-21T23:42:57.9700549Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T23:42:57.9700639Z               "line": 45
2026-06-21T23:42:57.9700725Z             },
2026-06-21T23:42:57.9700807Z             {
2026-06-21T23:42:57.9700948Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T23:42:57.9701038Z               "line": 59
2026-06-21T23:42:57.9701115Z             },
2026-06-21T23:42:57.9701199Z             {
2026-06-21T23:42:57.9701312Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T23:42:57.9701514Z               "line": 376
2026-06-21T23:42:57.9701585Z             }
2026-06-21T23:42:57.9701670Z           ]
2026-06-21T23:42:57.9701751Z         },
2026-06-21T23:42:57.9701837Z         "int": {
2026-06-21T23:42:57.9701932Z           "complete": true,
2026-06-21T23:42:57.9702013Z           "evidence": [
2026-06-21T23:42:57.9702100Z             {
2026-06-21T23:42:57.9702214Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T23:42:57.9702304Z               "line": 887
2026-06-21T23:42:57.9702386Z             },
2026-06-21T23:42:57.9702472Z             {
2026-06-21T23:42:57.9702594Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T23:42:57.9702781Z               "line": 342
2026-06-21T23:42:57.9702862Z             }
2026-06-21T23:42:57.9702948Z           ]
2026-06-21T23:42:57.9703025Z         },
2026-06-21T23:42:57.9703110Z         "unit": {
2026-06-21T23:42:57.9703210Z           "complete": true,
2026-06-21T23:42:57.9703312Z           "evidence": [
2026-06-21T23:42:57.9703402Z             {
2026-06-21T23:42:57.9703530Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T23:42:57.9703617Z               "line": 293
2026-06-21T23:42:57.9703708Z             },
2026-06-21T23:42:57.9703787Z             {
2026-06-21T23:42:57.9703910Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T23:42:57.9703991Z               "line": 304
2026-06-21T23:42:57.9704076Z             },
2026-06-21T23:42:57.9704156Z             {
2026-06-21T23:42:57.9704261Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T23:42:57.9704348Z               "line": 406
2026-06-21T23:42:57.9704447Z             },
2026-06-21T23:42:57.9704527Z             {
2026-06-21T23:42:57.9704658Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T23:42:57.9704743Z               "line": 72
2026-06-21T23:42:57.9704828Z             },
2026-06-21T23:42:57.9704910Z             {
2026-06-21T23:42:57.9705068Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T23:42:57.9705152Z               "line": 82
2026-06-21T23:42:57.9705239Z             },
2026-06-21T23:42:57.9705320Z             {
2026-06-21T23:42:57.9705443Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T23:42:57.9705529Z               "line": 100
2026-06-21T23:42:57.9705611Z             },
2026-06-21T23:42:57.9705696Z             {
2026-06-21T23:42:57.9705825Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T23:42:57.9705916Z               "line": 110
2026-06-21T23:42:57.9705996Z             },
2026-06-21T23:42:57.9706082Z             {
2026-06-21T23:42:57.9706212Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-21T23:42:57.9706298Z               "line": 125
2026-06-21T23:42:57.9706382Z             },
2026-06-21T23:42:57.9706467Z             {
2026-06-21T23:42:57.9706587Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T23:42:57.9706689Z               "line": 1044
2026-06-21T23:42:57.9706770Z             },
2026-06-21T23:42:57.9706861Z             {
2026-06-21T23:42:57.9706990Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T23:42:57.9707075Z               "line": 1110
2026-06-21T23:42:57.9707161Z             },
2026-06-21T23:42:57.9707238Z             {
2026-06-21T23:42:57.9707361Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T23:42:57.9707447Z               "line": 1357
2026-06-21T23:42:57.9707534Z             }
2026-06-21T23:42:57.9707615Z           ]
2026-06-21T23:42:57.9707690Z         }
2026-06-21T23:42:57.9707782Z       }
2026-06-21T23:42:57.9707849Z     },
2026-06-21T23:42:57.9707934Z     {
2026-06-21T23:42:57.9708019Z       "id": "REQ-PAIR-6",
2026-06-21T23:42:57.9708287Z       "title": "Elevation-gated per-subnet code fetch (UAC/root or elevated agent; else authenticator app)",
2026-06-21T23:42:57.9708373Z       "requiredStages": [
2026-06-21T23:42:57.9708535Z         "impl",
2026-06-21T23:42:57.9708611Z         "unit"
2026-06-21T23:42:57.9708697Z       ],
2026-06-21T23:42:57.9708779Z       "stages": {
2026-06-21T23:42:57.9708864Z         "doc": {
2026-06-21T23:42:57.9709021Z           "complete": false,
2026-06-21T23:42:57.9709108Z           "evidence": []
2026-06-21T23:42:57.9709192Z         },
2026-06-21T23:42:57.9709287Z         "impl": {
2026-06-21T23:42:57.9709378Z           "complete": true,
2026-06-21T23:42:57.9709459Z           "evidence": [
2026-06-21T23:42:57.9709540Z             {
2026-06-21T23:42:57.9709653Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9709745Z               "line": 3328
2026-06-21T23:42:57.9709945Z             },
2026-06-21T23:42:57.9710026Z             {
2026-06-21T23:42:57.9710126Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9710212Z               "line": 3709
2026-06-21T23:42:57.9710292Z             },
2026-06-21T23:42:57.9710375Z             {
2026-06-21T23:42:57.9710498Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T23:42:57.9710579Z               "line": 18
2026-06-21T23:42:57.9710661Z             },
2026-06-21T23:42:57.9710737Z             {
2026-06-21T23:42:57.9710851Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T23:42:57.9710932Z               "line": 49
2026-06-21T23:42:57.9711019Z             },
2026-06-21T23:42:57.9711099Z             {
2026-06-21T23:42:57.9711208Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T23:42:57.9711304Z               "line": 318
2026-06-21T23:42:57.9711390Z             }
2026-06-21T23:42:57.9711466Z           ]
2026-06-21T23:42:57.9711546Z         },
2026-06-21T23:42:57.9711641Z         "int": {
2026-06-21T23:42:57.9711727Z           "complete": false,
2026-06-21T23:42:57.9711806Z           "evidence": []
2026-06-21T23:42:57.9711896Z         },
2026-06-21T23:42:57.9711978Z         "unit": {
2026-06-21T23:42:57.9712069Z           "complete": true,
2026-06-21T23:42:57.9712154Z           "evidence": [
2026-06-21T23:42:57.9712240Z             {
2026-06-21T23:42:57.9712346Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9712431Z               "line": 10935
2026-06-21T23:42:57.9712511Z             },
2026-06-21T23:42:57.9712593Z             {
2026-06-21T23:42:57.9712703Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9712778Z               "line": 10952
2026-06-21T23:42:57.9712864Z             },
2026-06-21T23:42:57.9712946Z             {
2026-06-21T23:42:57.9713055Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T23:42:57.9713146Z               "line": 383
2026-06-21T23:42:57.9713222Z             },
2026-06-21T23:42:57.9713309Z             {
2026-06-21T23:42:57.9713413Z               "path": "crates/spt/src/elevation.rs",
2026-06-21T23:42:57.9713503Z               "line": 392
2026-06-21T23:42:57.9713581Z             }
2026-06-21T23:42:57.9713666Z           ]
2026-06-21T23:42:57.9713747Z         }
2026-06-21T23:42:57.9713828Z       }
2026-06-21T23:42:57.9713919Z     },
2026-06-21T23:42:57.9713999Z     {
2026-06-21T23:42:57.9714095Z       "id": "REQ-PAIR-7",
2026-06-21T23:42:57.9714258Z       "title": "Subnet icon (inline image metadata, GUI-only consumer)",
2026-06-21T23:42:57.9714347Z       "requiredStages": [],
2026-06-21T23:42:57.9714427Z       "stages": {
2026-06-21T23:42:57.9714508Z         "doc": {
2026-06-21T23:42:57.9714594Z           "complete": false,
2026-06-21T23:42:57.9714678Z           "evidence": []
2026-06-21T23:42:57.9714763Z         },
2026-06-21T23:42:57.9714850Z         "impl": {
2026-06-21T23:42:57.9714940Z           "complete": false,
2026-06-21T23:42:57.9715021Z           "evidence": []
2026-06-21T23:42:57.9715107Z         },
2026-06-21T23:42:57.9715184Z         "int": {
2026-06-21T23:42:57.9715269Z           "complete": false,
2026-06-21T23:42:57.9715360Z           "evidence": []
2026-06-21T23:42:57.9715441Z         },
2026-06-21T23:42:57.9715513Z         "unit": {
2026-06-21T23:42:57.9715608Z           "complete": false,
2026-06-21T23:42:57.9715784Z           "evidence": []
2026-06-21T23:42:57.9715866Z         }
2026-06-21T23:42:57.9715946Z       }
2026-06-21T23:42:57.9716022Z     },
2026-06-21T23:42:57.9716109Z     {
2026-06-21T23:42:57.9716190Z       "id": "REQ-PAIR-8",
2026-06-21T23:42:57.9717630Z       "title": "NTP TOTP offset: the pairing ceremony queries NTP at ceremony time (both sides) and applies the derived offset to the TOTP calculation in-process only; system-clock fallback when NTP is unreachable (offline LAN pairing unaffected — NTP failure never blocks a pairing that succeeds today); never sets the OS clock; no background sync loop (M8 decision 18; field trigger: enlyzeam clock >1 min off exceeds the ±1 window)",
2026-06-21T23:42:57.9717812Z       "requiredStages": [
2026-06-21T23:42:57.9717902Z         "impl",
2026-06-21T23:42:57.9717988Z         "unit"
2026-06-21T23:42:57.9718070Z       ],
2026-06-21T23:42:57.9718146Z       "stages": {
2026-06-21T23:42:57.9718231Z         "doc": {
2026-06-21T23:42:57.9718322Z           "complete": false,
2026-06-21T23:42:57.9718409Z           "evidence": []
2026-06-21T23:42:57.9718489Z         },
2026-06-21T23:42:57.9718569Z         "impl": {
2026-06-21T23:42:57.9718651Z           "complete": true,
2026-06-21T23:42:57.9718738Z           "evidence": [
2026-06-21T23:42:57.9718823Z             {
2026-06-21T23:42:57.9719029Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T23:42:57.9719114Z               "line": 577
2026-06-21T23:42:57.9719199Z             },
2026-06-21T23:42:57.9719281Z             {
2026-06-21T23:42:57.9719410Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T23:42:57.9719505Z               "line": 22
2026-06-21T23:42:57.9719586Z             },
2026-06-21T23:42:57.9719673Z             {
2026-06-21T23:42:57.9719795Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T23:42:57.9719880Z               "line": 76
2026-06-21T23:42:57.9719966Z             },
2026-06-21T23:42:57.9720048Z             {
2026-06-21T23:42:57.9720181Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T23:42:57.9720262Z               "line": 127
2026-06-21T23:42:57.9720348Z             }
2026-06-21T23:42:57.9720434Z           ]
2026-06-21T23:42:57.9720514Z         },
2026-06-21T23:42:57.9720596Z         "int": {
2026-06-21T23:42:57.9720686Z           "complete": false,
2026-06-21T23:42:57.9720772Z           "evidence": []
2026-06-21T23:42:57.9720848Z         },
2026-06-21T23:42:57.9720935Z         "unit": {
2026-06-21T23:42:57.9721015Z           "complete": true,
2026-06-21T23:42:57.9721101Z           "evidence": [
2026-06-21T23:42:57.9721186Z             {
2026-06-21T23:42:57.9721302Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T23:42:57.9721397Z               "line": 183
2026-06-21T23:42:57.9721478Z             },
2026-06-21T23:42:57.9721570Z             {
2026-06-21T23:42:57.9721701Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T23:42:57.9721788Z               "line": 195
2026-06-21T23:42:57.9721874Z             },
2026-06-21T23:42:57.9721955Z             {
2026-06-21T23:42:57.9722083Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T23:42:57.9722168Z               "line": 211
2026-06-21T23:42:57.9722254Z             },
2026-06-21T23:42:57.9722338Z             {
2026-06-21T23:42:57.9722446Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-21T23:42:57.9722528Z               "line": 227
2026-06-21T23:42:57.9722610Z             }
2026-06-21T23:42:57.9722700Z           ]
2026-06-21T23:42:57.9722780Z         }
2026-06-21T23:42:57.9722867Z       }
2026-06-21T23:42:57.9722958Z     },
2026-06-21T23:42:57.9723033Z     {
2026-06-21T23:42:57.9723124Z       "id": "REQ-PICKER-1",
2026-06-21T23:42:57.9726736Z       "title": "The picker renders a FOUR-state endpoint status (extending the W2 online/offline duality): the list-item square AND a color-coded STATUS line at the top of the pick-existing right-side details both show — gray OFFLINE; green ONLINE (online + PTY-controllable spt-hosted, not controlled); amber 'ONLINE - HARNESS ONLY' (online but NOT broker-PTY-controllable = harness-hosted, no broker PTY seat — today mis-shows green); blue 'ONLINE + CONTROLLED' (online + driven_by.is_some()). Derived on EndpointRow from {offline | controllable | driven_by} with precedence offline→gray, else driven_by→blue, else !controllable→amber, else green (driven_by outranks harness-only; mutually exclusive in practice — a harness-only endpoint has no broker PTY to control). The controllable discriminator is a NEW InfoJson.controllable: Option<bool> (serde-default, N-1-safe), stamped at the establish seam — cmd_listen (harness-hosted relay, no broker PTY) → Some(false); cmd_bind live_agent (spt-hosted broker PTY) → Some(true); absent → not-controllable (amber) default (harness-hosted is the common mis-reported case; one bind self-corrects). Store-projection-only (no live daemon query — doyle ruling). (v0.10.0)",
2026-06-21T23:42:57.9727070Z       "requiredStages": [
2026-06-21T23:42:57.9727159Z         "impl",
2026-06-21T23:42:57.9727245Z         "unit"
2026-06-21T23:42:57.9727328Z       ],
2026-06-21T23:42:57.9727418Z       "stages": {
2026-06-21T23:42:57.9727497Z         "doc": {
2026-06-21T23:42:57.9727592Z           "complete": false,
2026-06-21T23:42:57.9727678Z           "evidence": []
2026-06-21T23:42:57.9727768Z         },
2026-06-21T23:42:57.9727857Z         "impl": {
2026-06-21T23:42:57.9727933Z           "complete": true,
2026-06-21T23:42:57.9728025Z           "evidence": [
2026-06-21T23:42:57.9728111Z             {
2026-06-21T23:42:57.9728238Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:42:57.9728330Z               "line": 248
2026-06-21T23:42:57.9728416Z             },
2026-06-21T23:42:57.9728495Z             {
2026-06-21T23:42:57.9728611Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T23:42:57.9728701Z               "line": 263
2026-06-21T23:42:57.9728773Z             }
2026-06-21T23:42:57.9728873Z           ]
2026-06-21T23:42:57.9729016Z         },
2026-06-21T23:42:57.9729093Z         "int": {
2026-06-21T23:42:57.9729183Z           "complete": false,
2026-06-21T23:42:57.9729260Z           "evidence": []
2026-06-21T23:42:57.9729341Z         },
2026-06-21T23:42:57.9729431Z         "unit": {
2026-06-21T23:42:57.9729536Z           "complete": true,
2026-06-21T23:42:57.9729618Z           "evidence": [
2026-06-21T23:42:57.9729711Z             {
2026-06-21T23:42:57.9729827Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T23:42:57.9729909Z               "line": 476
2026-06-21T23:42:57.9729994Z             },
2026-06-21T23:42:57.9730079Z             {
2026-06-21T23:42:57.9730195Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:42:57.9730281Z               "line": 753
2026-06-21T23:42:57.9730364Z             },
2026-06-21T23:42:57.9730445Z             {
2026-06-21T23:42:57.9730555Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T23:42:57.9730647Z               "line": 886
2026-06-21T23:42:57.9730726Z             },
2026-06-21T23:42:57.9730812Z             {
2026-06-21T23:42:57.9730918Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T23:42:57.9731013Z               "line": 455
2026-06-21T23:42:57.9731089Z             }
2026-06-21T23:42:57.9731161Z           ]
2026-06-21T23:42:57.9731251Z         }
2026-06-21T23:42:57.9731323Z       }
2026-06-21T23:42:57.9731399Z     },
2026-06-21T23:42:57.9731481Z     {
2026-06-21T23:42:57.9731580Z       "id": "REQ-PICKER-2",
2026-06-21T23:42:57.9733508Z       "title": "The picker's project-history loader reads the git-backed context store, not the bare working tree: data.rs project_history_for enumerates an endpoint's projects via the BranchStore branch set (the context store keeps per-project context in git branches — contextstore::project_branch(project_id), checked out to projects/<project>/<id>/ only on-demand) instead of raw std::fs::read_dir over the empty working tree (which returned empty for ALL rows incl wall-a — the operator bug). Ordered newest→oldest by branch commit recency; degrades to empty (informational pane), never fails. (v0.10.0)",
2026-06-21T23:42:57.9733723Z       "requiredStages": [
2026-06-21T23:42:57.9733804Z         "impl",
2026-06-21T23:42:57.9733889Z         "unit"
2026-06-21T23:42:57.9733975Z       ],
2026-06-21T23:42:57.9734057Z       "stages": {
2026-06-21T23:42:57.9734138Z         "doc": {
2026-06-21T23:42:57.9734237Z           "complete": false,
2026-06-21T23:42:57.9734328Z           "evidence": []
2026-06-21T23:42:57.9734406Z         },
2026-06-21T23:42:57.9734495Z         "impl": {
2026-06-21T23:42:57.9734581Z           "complete": true,
2026-06-21T23:42:57.9734781Z           "evidence": [
2026-06-21T23:42:57.9734862Z             {
2026-06-21T23:42:57.9734987Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T23:42:57.9735087Z               "line": 183
2026-06-21T23:42:57.9735167Z             },
2026-06-21T23:42:57.9735253Z             {
2026-06-21T23:42:57.9735374Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T23:42:57.9735458Z               "line": 296
2026-06-21T23:42:57.9735543Z             }
2026-06-21T23:42:57.9735628Z           ]
2026-06-21T23:42:57.9735714Z         },
2026-06-21T23:42:57.9735798Z         "int": {
2026-06-21T23:42:57.9735893Z           "complete": false,
2026-06-21T23:42:57.9735975Z           "evidence": []
2026-06-21T23:42:57.9736061Z         },
2026-06-21T23:42:57.9736146Z         "unit": {
2026-06-21T23:42:57.9736232Z           "complete": true,
2026-06-21T23:42:57.9736318Z           "evidence": [
2026-06-21T23:42:57.9736400Z             {
2026-06-21T23:42:57.9736522Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T23:42:57.9736605Z               "line": 655
2026-06-21T23:42:57.9736690Z             }
2026-06-21T23:42:57.9736771Z           ]
2026-06-21T23:42:57.9736861Z         }
2026-06-21T23:42:57.9736944Z       }
2026-06-21T23:42:57.9737024Z     },
2026-06-21T23:42:57.9737114Z     {
2026-06-21T23:42:57.9737210Z       "id": "REQ-PICKER-3",
2026-06-21T23:42:57.9739781Z       "title": "A self-owned subnet row reconciles its status to the LIVE roster: a Subnet-category row whose endpoint_id overlaps a local (is_local) roster id is self-owned (this node hosts it), so its status square is OVERRIDDEN with the live roster status — the WAN registry snapshot (wansend::load_snapshots) is a periodically-advertised, independently-stale projection, while the local roster (p.alive) is ground truth for an endpoint this node hosts. One status square per endpoint (CONTEXT.md:348-350 — nothing licenses opposite squares for one endpoint across its Local vs Subnet listings). A reconcile pass in data.rs after the local_rows + subnet_rows gather; BOTH category listings are preserved (Local + Subnet are legitimately distinct views — you are in your own subnet), only the STATUS is unified. (v0.10.0)",
2026-06-21T23:42:57.9739882Z       "requiredStages": [
2026-06-21T23:42:57.9739972Z         "impl",
2026-06-21T23:42:57.9740058Z         "unit"
2026-06-21T23:42:57.9740144Z       ],
2026-06-21T23:42:57.9740229Z       "stages": {
2026-06-21T23:42:57.9740311Z         "doc": {
2026-06-21T23:42:57.9740392Z           "complete": false,
2026-06-21T23:42:57.9740488Z           "evidence": []
2026-06-21T23:42:57.9740572Z         },
2026-06-21T23:42:57.9740645Z         "impl": {
2026-06-21T23:42:57.9740741Z           "complete": true,
2026-06-21T23:42:57.9740817Z           "evidence": [
2026-06-21T23:42:57.9740897Z             {
2026-06-21T23:42:57.9741005Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T23:42:57.9741092Z               "line": 124
2026-06-21T23:42:57.9741173Z             }
2026-06-21T23:42:57.9741254Z           ]
2026-06-21T23:42:57.9741339Z         },
2026-06-21T23:42:57.9741420Z         "int": {
2026-06-21T23:42:57.9741516Z           "complete": false,
2026-06-21T23:42:57.9741601Z           "evidence": []
2026-06-21T23:42:57.9741682Z         },
2026-06-21T23:42:57.9741902Z         "unit": {
2026-06-21T23:42:57.9741988Z           "complete": true,
2026-06-21T23:42:57.9742074Z           "evidence": [
2026-06-21T23:42:57.9742155Z             {
2026-06-21T23:42:57.9742264Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T23:42:57.9742346Z               "line": 369
2026-06-21T23:42:57.9742427Z             }
2026-06-21T23:42:57.9742502Z           ]
2026-06-21T23:42:57.9742574Z         }
2026-06-21T23:42:57.9742666Z       }
2026-06-21T23:42:57.9742747Z     },
2026-06-21T23:42:57.9742831Z     {
2026-06-21T23:42:57.9742922Z       "id": "REQ-PICKER-4",
2026-06-21T23:42:57.9744855Z       "title": "The picker's Subnet category renders the canonical node LABEL, not bare key-hex: a subnet row's node renders as 'LABEL (keyprefix…)' (e.g. 'HFENDULEAM (bcead52b…)') per CONTEXT.md:650 + Instance.node_label, NOT the raw node key-hex (SPT_DEV:14efb80cb… — a picker-only regression because resource_projection→ResourceRow drops node_label, so data.rs subnet_rows uses the raw row.node). Thread node_label into the picker subnet path (ResourceRow gains node_label, or subnet_rows looks it up via the registry's node_labels) and REUSE the one canonical render (format!(\"{l} ({}…)\", key_prefix) — cli.rs / wansend.rs), never a re-implementation. (v0.10.0)",
2026-06-21T23:42:57.9745065Z       "requiredStages": [
2026-06-21T23:42:57.9745146Z         "impl",
2026-06-21T23:42:57.9745237Z         "unit"
2026-06-21T23:42:57.9745327Z       ],
2026-06-21T23:42:57.9745408Z       "stages": {
2026-06-21T23:42:57.9745494Z         "doc": {
2026-06-21T23:42:57.9745576Z           "complete": false,
2026-06-21T23:42:57.9745670Z           "evidence": []
2026-06-21T23:42:57.9745751Z         },
2026-06-21T23:42:57.9745848Z         "impl": {
2026-06-21T23:42:57.9745929Z           "complete": true,
2026-06-21T23:42:57.9746022Z           "evidence": [
2026-06-21T23:42:57.9746108Z             {
2026-06-21T23:42:57.9746237Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:42:57.9749893Z               "line": 353
2026-06-21T23:42:57.9750017Z             },
2026-06-21T23:42:57.9750103Z             {
2026-06-21T23:42:57.9750227Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T23:42:57.9750317Z               "line": 105
2026-06-21T23:42:57.9750394Z             }
2026-06-21T23:42:57.9750475Z           ]
2026-06-21T23:42:57.9750561Z         },
2026-06-21T23:42:57.9750647Z         "int": {
2026-06-21T23:42:57.9750738Z           "complete": false,
2026-06-21T23:42:57.9750818Z           "evidence": []
2026-06-21T23:42:57.9750909Z         },
2026-06-21T23:42:57.9751001Z         "unit": {
2026-06-21T23:42:57.9751095Z           "complete": true,
2026-06-21T23:42:57.9751195Z           "evidence": [
2026-06-21T23:42:57.9751277Z             {
2026-06-21T23:42:57.9751415Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:42:57.9751508Z               "line": 1246
2026-06-21T23:42:57.9751589Z             },
2026-06-21T23:42:57.9751675Z             {
2026-06-21T23:42:57.9751800Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T23:42:57.9751880Z               "line": 427
2026-06-21T23:42:57.9751962Z             }
2026-06-21T23:42:57.9752043Z           ]
2026-06-21T23:42:57.9752124Z         }
2026-06-21T23:42:57.9752204Z       }
2026-06-21T23:42:57.9752291Z     },
2026-06-21T23:42:57.9752363Z     {
2026-06-21T23:42:57.9752462Z       "id": "REQ-PICKER-5",
2026-06-21T23:42:57.9755605Z       "title": "`spt endpoint list` (bare/subnet view) renders an ALIGNED table with canonical node labels: cmd_endpoint_list prints subnet rows with `\\t` TAB separators (cli.rs:~1651-1662) so variable-width endpoint_ids snap fields to different tab-stops → a RAGGED status column (operator screenshot: X/help statuses misaligned vs rt-*/sptc-*/wall-a); and it calls the node renderer with no label → bare key-hex for every row (SAME ResourceRow-drops-node_label root as REQ-PICKER-4). FIX: max-width per-column padding (mirror render_node_rows' pad, pad by char count not byte len — '…' is multibyte) replacing the tabs, and render the node via the shared node_label_display now that ResourceRow carries node_label (REQ-PICKER-4). Extract a pure row-formatter seam so the alignment+label is unit-testable. ALSO: the bare list is the SUBNET view (a just-run LOCAL perch is invisible cross-subnet until the next advertise tick), so emit a `--local` hint line so a freshly-run endpoint isn't perceived as lost. (v0.10.0; operator-flagged + doyle dispatch 2026-06-17)",
2026-06-21T23:42:57.9755874Z       "requiredStages": [
2026-06-21T23:42:57.9755968Z         "impl",
2026-06-21T23:42:57.9756054Z         "unit"
2026-06-21T23:42:57.9756136Z       ],
2026-06-21T23:42:57.9756321Z       "stages": {
2026-06-21T23:42:57.9756408Z         "doc": {
2026-06-21T23:42:57.9756513Z           "complete": false,
2026-06-21T23:42:57.9756602Z           "evidence": []
2026-06-21T23:42:57.9756687Z         },
2026-06-21T23:42:57.9756778Z         "impl": {
2026-06-21T23:42:57.9756872Z           "complete": true,
2026-06-21T23:42:57.9756971Z           "evidence": [
2026-06-21T23:42:57.9757042Z             {
2026-06-21T23:42:57.9757153Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9757238Z               "line": 1802
2026-06-21T23:42:57.9757324Z             }
2026-06-21T23:42:57.9757400Z           ]
2026-06-21T23:42:57.9757482Z         },
2026-06-21T23:42:57.9757567Z         "int": {
2026-06-21T23:42:57.9757662Z           "complete": false,
2026-06-21T23:42:57.9757754Z           "evidence": []
2026-06-21T23:42:57.9757834Z         },
2026-06-21T23:42:57.9757914Z         "unit": {
2026-06-21T23:42:57.9758011Z           "complete": true,
2026-06-21T23:42:57.9758097Z           "evidence": [
2026-06-21T23:42:57.9758182Z             {
2026-06-21T23:42:57.9758287Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9758379Z               "line": 7526
2026-06-21T23:42:57.9758459Z             }
2026-06-21T23:42:57.9758535Z           ]
2026-06-21T23:42:57.9758621Z         }
2026-06-21T23:42:57.9758693Z       }
2026-06-21T23:42:57.9758788Z     },
2026-06-21T23:42:57.9758859Z     {
2026-06-21T23:42:57.9759051Z       "id": "REQ-PICKER-ADAPTER-DESCRIPTION",
2026-06-21T23:42:57.9760439Z       "title": "The Create-new adapter-CHOICE screen of `spt endpoint run`'s picker shows a right-hand Description panel (like the Pick-existing endpoint picker's two-pane) surfacing per-adapter detail: install date, last-updated, adapter TYPE / the endpoint types it hosts, and the adapter description — so the user can see WHAT each adapter is before choosing it (today the selector lists bare names). DEFERRED fast-follow to v0.12.0 (operator 2026-06-18). (post-v0.12.0)",
2026-06-21T23:42:57.9760553Z       "requiredStages": [],
2026-06-21T23:42:57.9760645Z       "stages": {
2026-06-21T23:42:57.9760725Z         "doc": {
2026-06-21T23:42:57.9760810Z           "complete": false,
2026-06-21T23:42:57.9760897Z           "evidence": []
2026-06-21T23:42:57.9760983Z         },
2026-06-21T23:42:57.9761059Z         "impl": {
2026-06-21T23:42:57.9761149Z           "complete": false,
2026-06-21T23:42:57.9761236Z           "evidence": []
2026-06-21T23:42:57.9761321Z         },
2026-06-21T23:42:57.9761407Z         "int": {
2026-06-21T23:42:57.9761492Z           "complete": false,
2026-06-21T23:42:57.9761585Z           "evidence": []
2026-06-21T23:42:57.9761669Z         },
2026-06-21T23:42:57.9761745Z         "unit": {
2026-06-21T23:42:57.9761847Z           "complete": false,
2026-06-21T23:42:57.9761932Z           "evidence": []
2026-06-21T23:42:57.9762012Z         }
2026-06-21T23:42:57.9762092Z       }
2026-06-21T23:42:57.9762178Z     },
2026-06-21T23:42:57.9762265Z     {
2026-06-21T23:42:57.9762369Z       "id": "REQ-PICKER-HISTORY-FRESH",
2026-06-21T23:42:57.9763495Z       "title": "The `spt endpoint run` picker shows project history for FRESH endpoints (operator-raised v0.12.0 real-harness finding). Symptom: a fresh endpoint shows no project history in the picker. ROOT TBD — investigate the project-history loader (v0.10.0 PICKER-2, picker/data.rs) before fixing: distinguish a real loader bug from 'fresh = no history yet' semantics. (v0.12.1)",
2026-06-21T23:42:57.9763690Z       "requiredStages": [
2026-06-21T23:42:57.9763786Z         "impl",
2026-06-21T23:42:57.9763876Z         "unit"
2026-06-21T23:42:57.9763952Z       ],
2026-06-21T23:42:57.9764037Z       "stages": {
2026-06-21T23:42:57.9764120Z         "doc": {
2026-06-21T23:42:57.9764201Z           "complete": false,
2026-06-21T23:42:57.9764290Z           "evidence": []
2026-06-21T23:42:57.9764376Z         },
2026-06-21T23:42:57.9764461Z         "impl": {
2026-06-21T23:42:57.9764551Z           "complete": true,
2026-06-21T23:42:57.9764640Z           "evidence": [
2026-06-21T23:42:57.9764832Z             {
2026-06-21T23:42:57.9764941Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T23:42:57.9765021Z               "line": 275
2026-06-21T23:42:57.9765103Z             }
2026-06-21T23:42:57.9765188Z           ]
2026-06-21T23:42:57.9765260Z         },
2026-06-21T23:42:57.9765341Z         "int": {
2026-06-21T23:42:57.9765428Z           "complete": false,
2026-06-21T23:42:57.9765522Z           "evidence": []
2026-06-21T23:42:57.9765598Z         },
2026-06-21T23:42:57.9765684Z         "unit": {
2026-06-21T23:42:57.9765771Z           "complete": true,
2026-06-21T23:42:57.9765851Z           "evidence": [
2026-06-21T23:42:57.9765932Z             {
2026-06-21T23:42:57.9766043Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T23:42:57.9766133Z               "line": 400
2026-06-21T23:42:57.9766214Z             }
2026-06-21T23:42:57.9766299Z           ]
2026-06-21T23:42:57.9766381Z         }
2026-06-21T23:42:57.9766467Z       }
2026-06-21T23:42:57.9766552Z     },
2026-06-21T23:42:57.9766634Z     {
2026-06-21T23:42:57.9766749Z       "id": "REQ-PICKER-ONLINE-ACTION",
2026-06-21T23:42:57.9768470Z       "title": "The `spt endpoint run` picker shows the correct action for an ALREADY-ONLINE endpoint — Attach, NOT 'Start now' (operator-raised v0.12.0 real-harness finding). Symptom: the picker offers 'Start now' for endpoints that are already online. ROOT TBD — investigate the status→action mapping (v0.10.0 PICKER-1 four-state status, picker/model.rs): is it reading live/online state correctly, or rendering stale/wedged broker state (i.e. partly a symptom of the broker wedge / status=online latch)? Fix so online → Attach. (v0.12.1)",
2026-06-21T23:42:57.9768575Z       "requiredStages": [
2026-06-21T23:42:57.9768657Z         "impl",
2026-06-21T23:42:57.9768728Z         "unit"
2026-06-21T23:42:57.9768804Z       ],
2026-06-21T23:42:57.9768890Z       "stages": {
2026-06-21T23:42:57.9769042Z         "doc": {
2026-06-21T23:42:57.9769123Z           "complete": false,
2026-06-21T23:42:57.9769220Z           "evidence": []
2026-06-21T23:42:57.9769306Z         },
2026-06-21T23:42:57.9769390Z         "impl": {
2026-06-21T23:42:57.9769501Z           "complete": true,
2026-06-21T23:42:57.9769597Z           "evidence": [
2026-06-21T23:42:57.9769677Z             {
2026-06-21T23:42:57.9769785Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T23:42:57.9769871Z               "line": 654
2026-06-21T23:42:57.9769957Z             }
2026-06-21T23:42:57.9770036Z           ]
2026-06-21T23:42:57.9770121Z         },
2026-06-21T23:42:57.9770198Z         "int": {
2026-06-21T23:42:57.9770289Z           "complete": false,
2026-06-21T23:42:57.9770384Z           "evidence": []
2026-06-21T23:42:57.9770459Z         },
2026-06-21T23:42:57.9770547Z         "unit": {
2026-06-21T23:42:57.9770623Z           "complete": true,
2026-06-21T23:42:57.9770708Z           "evidence": [
2026-06-21T23:42:57.9770789Z             {
2026-06-21T23:42:57.9770899Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T23:42:57.9770985Z               "line": 1078
2026-06-21T23:42:57.9771070Z             },
2026-06-21T23:42:57.9771157Z             {
2026-06-21T23:42:57.9771261Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T23:42:57.9771356Z               "line": 1092
2026-06-21T23:42:57.9771437Z             }
2026-06-21T23:42:57.9771614Z           ]
2026-06-21T23:42:57.9771705Z         }
2026-06-21T23:42:57.9771786Z       }
2026-06-21T23:42:57.9771867Z     },
2026-06-21T23:42:57.9771947Z     {
2026-06-21T23:42:57.9772048Z       "id": "REQ-PICKER-UX-V013",
2026-06-21T23:42:57.9773648Z       "title": "`spt endpoint run` picker UX (v0.13.0 operator dogfooding): (1) SKIP the first screen — open directly on 'Pick existing'; `n` jumps to 'Create new'. (2) AUTO-ATTACH after both Start-new AND Resume-from-history (both currently don't attach and show no stdout); add an `h` shortcut to run headless (no attach). (3) 'controlled by' shows the node NAME (node_label_display), not the raw hex. (4) Clean up Start-new output — drop the Rust `pid=Some(142748)` leak and the 'harness binds its perch on startup' internals; user-friendly, not a process log. (v0.13.0)",
2026-06-21T23:42:57.9773854Z       "requiredStages": [],
2026-06-21T23:42:57.9773940Z       "stages": {
2026-06-21T23:42:57.9774026Z         "doc": {
2026-06-21T23:42:57.9774127Z           "complete": false,
2026-06-21T23:42:57.9774217Z           "evidence": []
2026-06-21T23:42:57.9774302Z         },
2026-06-21T23:42:57.9774385Z         "impl": {
2026-06-21T23:42:57.9774470Z           "complete": false,
2026-06-21T23:42:57.9774550Z           "evidence": []
2026-06-21T23:42:57.9774627Z         },
2026-06-21T23:42:57.9774714Z         "int": {
2026-06-21T23:42:57.9774807Z           "complete": false,
2026-06-21T23:42:57.9774892Z           "evidence": []
2026-06-21T23:42:57.9774973Z         },
2026-06-21T23:42:57.9775054Z         "unit": {
2026-06-21T23:42:57.9775153Z           "complete": false,
2026-06-21T23:42:57.9775238Z           "evidence": []
2026-06-21T23:42:57.9775324Z         }
2026-06-21T23:42:57.9775401Z       }
2026-06-21T23:42:57.9775477Z     },
2026-06-21T23:42:57.9775557Z     {
2026-06-21T23:42:57.9775639Z       "id": "REQ-PRES-1",
2026-06-21T23:42:57.9777031Z       "title": "Presence resolution: the presence datum (last_active_node, last_active_endpoint, ts) gossiped subnet-wide via the agent-interaction heartbeat (rides registry distribution, visibility-gated) + one first-class most-recently-active resolution API consumed by notif first-fire, update-consent delivery, consent escalation, and shell wake resolution (M5 scope decision 1: resolution only — the PresenceChannel endpoint stays deferred)",
2026-06-21T23:42:57.9777131Z       "requiredStages": [
2026-06-21T23:42:57.9777213Z         "impl",
2026-06-21T23:42:57.9777294Z         "unit",
2026-06-21T23:42:57.9777365Z         "int"
2026-06-21T23:42:57.9777451Z       ],
2026-06-21T23:42:57.9777533Z       "stages": {
2026-06-21T23:42:57.9777619Z         "doc": {
2026-06-21T23:42:57.9777713Z           "complete": true,
2026-06-21T23:42:57.9777798Z           "evidence": [
2026-06-21T23:42:57.9777879Z             {
2026-06-21T23:42:57.9777978Z               "path": "docs/DEFERRED.md",
2026-06-21T23:42:57.9778058Z               "line": 11
2026-06-21T23:42:57.9778143Z             }
2026-06-21T23:42:57.9778229Z           ]
2026-06-21T23:42:57.9778316Z         },
2026-06-21T23:42:57.9778401Z         "impl": {
2026-06-21T23:42:57.9778491Z           "complete": true,
2026-06-21T23:42:57.9778569Z           "evidence": [
2026-06-21T23:42:57.9778650Z             {
2026-06-21T23:42:57.9778773Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T23:42:57.9778860Z               "line": 515
2026-06-21T23:42:57.9779012Z             },
2026-06-21T23:42:57.9779087Z             {
2026-06-21T23:42:57.9779213Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T23:42:57.9779292Z               "line": 567
2026-06-21T23:42:57.9779378Z             },
2026-06-21T23:42:57.9779470Z             {
2026-06-21T23:42:57.9779570Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T23:42:57.9779660Z               "line": 188
2026-06-21T23:42:57.9779741Z             },
2026-06-21T23:42:57.9779828Z             {
2026-06-21T23:42:57.9779941Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T23:42:57.9780167Z               "line": 214
2026-06-21T23:42:57.9780251Z             },
2026-06-21T23:42:57.9780331Z             {
2026-06-21T23:42:57.9780450Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T23:42:57.9780536Z               "line": 28
2026-06-21T23:42:57.9780620Z             },
2026-06-21T23:42:57.9780700Z             {
2026-06-21T23:42:57.9780816Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T23:42:57.9780902Z               "line": 105
2026-06-21T23:42:57.9780967Z             },
2026-06-21T23:42:57.9781054Z             {
2026-06-21T23:42:57.9781159Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T23:42:57.9781339Z               "line": 161
2026-06-21T23:42:57.9781422Z             },
2026-06-21T23:42:57.9781507Z             {
2026-06-21T23:42:57.9781630Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T23:42:57.9781712Z               "line": 180
2026-06-21T23:42:57.9781798Z             },
2026-06-21T23:42:57.9781888Z             {
2026-06-21T23:42:57.9782017Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:42:57.9782099Z               "line": 421
2026-06-21T23:42:57.9782184Z             },
2026-06-21T23:42:57.9782269Z             {
2026-06-21T23:42:57.9782385Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T23:42:57.9782470Z               "line": 289
2026-06-21T23:42:57.9782551Z             },
2026-06-21T23:42:57.9782637Z             {
2026-06-21T23:42:57.9782743Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T23:42:57.9782836Z               "line": 336
2026-06-21T23:42:57.9782923Z             },
2026-06-21T23:42:57.9783000Z             {
2026-06-21T23:42:57.9783118Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T23:42:57.9783199Z               "line": 362
2026-06-21T23:42:57.9783284Z             },
2026-06-21T23:42:57.9783366Z             {
2026-06-21T23:42:57.9783475Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:42:57.9783560Z               "line": 100
2026-06-21T23:42:57.9783642Z             }
2026-06-21T23:42:57.9783728Z           ]
2026-06-21T23:42:57.9783809Z         },
2026-06-21T23:42:57.9783889Z         "int": {
2026-06-21T23:42:57.9783972Z           "complete": true,
2026-06-21T23:42:57.9784052Z           "evidence": [
2026-06-21T23:42:57.9784133Z             {
2026-06-21T23:42:57.9784253Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T23:42:57.9784334Z               "line": 563
2026-06-21T23:42:57.9784410Z             },
2026-06-21T23:42:57.9784490Z             {
2026-06-21T23:42:57.9784601Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T23:42:57.9784696Z               "line": 747
2026-06-21T23:42:57.9784767Z             },
2026-06-21T23:42:57.9784848Z             {
2026-06-21T23:42:57.9784959Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T23:42:57.9785044Z               "line": 1165
2026-06-21T23:42:57.9785129Z             }
2026-06-21T23:42:57.9785211Z           ]
2026-06-21T23:42:57.9785283Z         },
2026-06-21T23:42:57.9785372Z         "unit": {
2026-06-21T23:42:57.9785452Z           "complete": true,
2026-06-21T23:42:57.9785538Z           "evidence": [
2026-06-21T23:42:57.9785615Z             {
2026-06-21T23:42:57.9785722Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T23:42:57.9785807Z               "line": 674
2026-06-21T23:42:57.9785889Z             },
2026-06-21T23:42:57.9785971Z             {
2026-06-21T23:42:57.9786085Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T23:42:57.9786180Z               "line": 238
2026-06-21T23:42:57.9786262Z             },
2026-06-21T23:42:57.9786347Z             {
2026-06-21T23:42:57.9786461Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T23:42:57.9786543Z               "line": 269
2026-06-21T23:42:57.9786634Z             },
2026-06-21T23:42:57.9786714Z             {
2026-06-21T23:42:57.9786829Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T23:42:57.9787000Z               "line": 305
2026-06-21T23:42:57.9787085Z             },
2026-06-21T23:42:57.9787168Z             {
2026-06-21T23:42:57.9787282Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-21T23:42:57.9787372Z               "line": 336
2026-06-21T23:42:57.9787453Z             },
2026-06-21T23:42:57.9787540Z             {
2026-06-21T23:42:57.9787663Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:42:57.9787754Z               "line": 1217
2026-06-21T23:42:57.9787840Z             },
2026-06-21T23:42:57.9787911Z             {
2026-06-21T23:42:57.9788088Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:42:57.9788174Z               "line": 1163
2026-06-21T23:42:57.9788254Z             }
2026-06-21T23:42:57.9788329Z           ]
2026-06-21T23:42:57.9788415Z         }
2026-06-21T23:42:57.9788501Z       }
2026-06-21T23:42:57.9788571Z     },
2026-06-21T23:42:57.9788660Z     {
2026-06-21T23:42:57.9788747Z       "id": "REQ-RC-1",
2026-06-21T23:42:57.9790877Z       "title": "`spt rc <id>` — user CLI attaching a local terminal to a broker-held PTY, reusing the cross-node attach machinery (attach.rs request_attach → send_attach_input pump, spt-net AttachRecord codec); local attach is the degenerate single-node case of the cross-node path (rides REQ-TERM-3 byte-stream streaming). Read-only `--view` (watch, no stdin forwarded). Clean detach that does NOT terminate the broker-held session (KNOWN-HAZARDS: PTY ownership stays with the broker; no termination on detach). Explicit detach keybind that cannot collide with harness passthrough input (legacy capsule used a ctrl-b prefix); documented. ConPTY DSR auto-answer in the attach reader (hazard 5.5).",
2026-06-21T23:42:57.9790987Z       "requiredStages": [
2026-06-21T23:42:57.9791068Z         "impl",
2026-06-21T23:42:57.9791147Z         "unit",
2026-06-21T23:42:57.9791227Z         "int"
2026-06-21T23:42:57.9791309Z       ],
2026-06-21T23:42:57.9791400Z       "stages": {
2026-06-21T23:42:57.9791481Z         "doc": {
2026-06-21T23:42:57.9791575Z           "complete": false,
2026-06-21T23:42:57.9791657Z           "evidence": []
2026-06-21T23:42:57.9791747Z         },
2026-06-21T23:42:57.9791823Z         "impl": {
2026-06-21T23:42:57.9791918Z           "complete": true,
2026-06-21T23:42:57.9792011Z           "evidence": [
2026-06-21T23:42:57.9792091Z             {
2026-06-21T23:42:57.9792209Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T23:42:57.9792287Z               "line": 1038
2026-06-21T23:42:57.9792372Z             },
2026-06-21T23:42:57.9792458Z             {
2026-06-21T23:42:57.9792587Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:42:57.9792673Z               "line": 2177
2026-06-21T23:42:57.9792759Z             },
2026-06-21T23:42:57.9792844Z             {
2026-06-21T23:42:57.9792960Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T23:42:57.9793053Z               "line": 1017
2026-06-21T23:42:57.9793144Z             },
2026-06-21T23:42:57.9793232Z             {
2026-06-21T23:42:57.9793354Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T23:42:57.9793440Z               "line": 1051
2026-06-21T23:42:57.9793527Z             },
2026-06-21T23:42:57.9793608Z             {
2026-06-21T23:42:57.9793716Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:42:57.9793797Z               "line": 22
2026-06-21T23:42:57.9793878Z             },
2026-06-21T23:42:57.9793959Z             {
2026-06-21T23:42:57.9794059Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:42:57.9794139Z               "line": 701
2026-06-21T23:42:57.9794226Z             }
2026-06-21T23:42:57.9794312Z           ]
2026-06-21T23:42:57.9794392Z         },
2026-06-21T23:42:57.9794473Z         "int": {
2026-06-21T23:42:57.9794561Z           "complete": true,
2026-06-21T23:42:57.9794646Z           "evidence": [
2026-06-21T23:42:57.9794731Z             {
2026-06-21T23:42:57.9794941Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T23:42:57.9795027Z               "line": 261
2026-06-21T23:42:57.9795112Z             },
2026-06-21T23:42:57.9795195Z             {
2026-06-21T23:42:57.9795303Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T23:42:57.9795384Z               "line": 288
2026-06-21T23:42:57.9795471Z             },
2026-06-21T23:42:57.9795552Z             {
2026-06-21T23:42:57.9795666Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T23:42:57.9795747Z               "line": 416
2026-06-21T23:42:57.9795825Z             }
2026-06-21T23:42:57.9795905Z           ]
2026-06-21T23:42:57.9796074Z         },
2026-06-21T23:42:57.9796156Z         "unit": {
2026-06-21T23:42:57.9796245Z           "complete": true,
2026-06-21T23:42:57.9796326Z           "evidence": [
2026-06-21T23:42:57.9796411Z             {
2026-06-21T23:42:57.9796526Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T23:42:57.9796611Z               "line": 1415
2026-06-21T23:42:57.9796701Z             },
2026-06-21T23:42:57.9796788Z             {
2026-06-21T23:42:57.9796888Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:42:57.9796978Z               "line": 1133
2026-06-21T23:42:57.9797064Z             },
2026-06-21T23:42:57.9797141Z             {
2026-06-21T23:42:57.9797245Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:42:57.9797331Z               "line": 1162
2026-06-21T23:42:57.9797423Z             },
2026-06-21T23:42:57.9797503Z             {
2026-06-21T23:42:57.9797608Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:42:57.9797699Z               "line": 1175
2026-06-21T23:42:57.9797785Z             }
2026-06-21T23:42:57.9797870Z           ]
2026-06-21T23:42:57.9797942Z         }
2026-06-21T23:42:57.9798033Z       }
2026-06-21T23:42:57.9798114Z     },
2026-06-21T23:42:57.9798194Z     {
2026-06-21T23:42:57.9798304Z       "id": "REQ-RC-KEY-VT-TRANSLATE",
2026-06-21T23:42:57.9804197Z       "title": "On Windows, `spt rc` translates CONSOLE KEY EVENTS to standard xterm VT so ALL keys reach the hosted harness — arrows/Home/End/PgUp/PgDn/Insert/Delete/F-keys, every modifier combo, Backspace/Ctrl+Backspace — not just the byte-emitting ones. ROOT (operator HITL, doyle /diagnose): `spt rc` reads raw STDIN BYTES (spawn_stdin_reader, std::io::stdin().read); on the Windows LEGACY console (no ENABLE_VIRTUAL_TERMINAL_INPUT) the special keys produce console KEY_EVENTs, NOT stdin bytes, so the byte-pump sees nothing → those keys are DEAD. Enabling ENABLE_VIRTUAL_TERMINAL_INPUT was rejected (W7 dc07c39): on Windows Terminal it yields harness-specific win32-input-mode + broke ctrl-b detach. FIX (agnostic, full fidelity): on Windows, replace the stdin byte-read with a crossterm EVENT source (crossterm 0.28 already a dep; the picker already reads events) and translate each KeyEvent → STANDARD xterm VT bytes via a PURE translate_key_event(KeyEvent)->Vec<u8> (copy a known-correct xterm table verbatim, ADR-0001 spirit), forwarded through the SAME rc pump — the harness receives ordinary xterm VT (harness-AGNOSTIC, no win32-input-mode). Press-only (drop Repeat/Release). Detach stays the ctrl-b+'d' PREFIX, event-sourced (doyle Option B): Ctrl+B arms; armed+plain-'d'⇒Detach; armed+Ctrl+B⇒emit literal 0x02; armed+other⇒0x02 then translate(other). Non-tty stdin (piped/tests) → FALL BACK to the byte-read path (keeps e2e byte-injection working). UNIX UNCHANGED (its raw-mode byte stream already delivers proper VT; cfg-split, zero Unix regression). SUPERSEDES the W7 normalize_key_byte swap on Windows — the translator emits 0x7f for Backspace and 0x08 for Ctrl+Backspace natively (REQ-HAZARD-RC-INPUT-KEY-ENCODING folded in). NO int (a live interactive console can't be driven in CI — HITL, REQ-RUN-PICKER/RC-1 precedent); the exhaustive non-vacuous translate_key_event mapping unit + the event-detach unit ARE the surface. (v0.13.0)",
2026-06-21T23:42:57.9804314Z       "requiredStages": [
2026-06-21T23:42:57.9804399Z         "doc",
2026-06-21T23:42:57.9804586Z         "impl",
2026-06-21T23:42:57.9804671Z         "unit"
2026-06-21T23:42:57.9804753Z       ],
2026-06-21T23:42:57.9804839Z       "stages": {
2026-06-21T23:42:57.9804925Z         "doc": {
2026-06-21T23:42:57.9805005Z           "complete": true,
2026-06-21T23:42:57.9805102Z           "evidence": [
2026-06-21T23:42:57.9805182Z             {
2026-06-21T23:42:57.9805281Z               "path": "CONTEXT.md",
2026-06-21T23:42:57.9805363Z               "line": 345
2026-06-21T23:42:57.9805445Z             },
2026-06-21T23:42:57.9805544Z             {
2026-06-21T23:42:57.9805654Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T23:42:57.9805740Z               "line": 440
2026-06-21T23:42:57.9805954Z             }
2026-06-21T23:42:57.9806041Z           ]
2026-06-21T23:42:57.9806117Z         },
2026-06-21T23:42:57.9806197Z         "impl": {
2026-06-21T23:42:57.9806283Z           "complete": true,
2026-06-21T23:42:57.9806370Z           "evidence": [
2026-06-21T23:42:57.9806460Z             {
2026-06-21T23:42:57.9806549Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:42:57.9806644Z               "line": 226
2026-06-21T23:42:57.9806726Z             },
2026-06-21T23:42:57.9806805Z             {
2026-06-21T23:42:57.9806900Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:42:57.9806986Z               "line": 285
2026-06-21T23:42:57.9807067Z             },
2026-06-21T23:42:57.9807148Z             {
2026-06-21T23:42:57.9807247Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:42:57.9807334Z               "line": 300
2026-06-21T23:42:57.9807415Z             },
2026-06-21T23:42:57.9807500Z             {
2026-06-21T23:42:57.9807600Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:42:57.9807697Z               "line": 315
2026-06-21T23:42:57.9807778Z             },
2026-06-21T23:42:57.9807863Z             {
2026-06-21T23:42:57.9807959Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:42:57.9808039Z               "line": 364
2026-06-21T23:42:57.9808116Z             }
2026-06-21T23:42:57.9808196Z           ]
2026-06-21T23:42:57.9808283Z         },
2026-06-21T23:42:57.9808364Z         "int": {
2026-06-21T23:42:57.9808459Z           "complete": false,
2026-06-21T23:42:57.9808540Z           "evidence": []
2026-06-21T23:42:57.9808622Z         },
2026-06-21T23:42:57.9808711Z         "unit": {
2026-06-21T23:42:57.9808793Z           "complete": true,
2026-06-21T23:42:57.9808879Z           "evidence": [
2026-06-21T23:42:57.9809036Z             {
2026-06-21T23:42:57.9809136Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:42:57.9809223Z               "line": 1190
2026-06-21T23:42:57.9809299Z             },
2026-06-21T23:42:57.9809388Z             {
2026-06-21T23:42:57.9809502Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:42:57.9809593Z               "line": 1305
2026-06-21T23:42:57.9809668Z             }
2026-06-21T23:42:57.9809753Z           ]
2026-06-21T23:42:57.9809833Z         }
2026-06-21T23:42:57.9809915Z       }
2026-06-21T23:42:57.9810001Z     },
2026-06-21T23:42:57.9810081Z     {
2026-06-21T23:42:57.9810186Z       "id": "REQ-RC-MOUSE-FORWARD",
2026-06-21T23:42:57.9814551Z       "title": "On Windows, `spt rc` must FORWARD scroll-wheel events to the harness when the harness has mouse reporting on. ROOT (operator HITL): P1's RawGuard EnableMouseCapture (added for right-click paste, REQ-RC-WIN-PASTE) makes Windows Terminal forward ALL mouse — including the scroll wheel — to rc instead of scrolling its own buffer, but the rc mouse handler dropped everything except right-button-down → scroll DIED (and WT's native scrollback is stolen by the capture). Operator ruling: keep mouse capture + right-click bracketed paste AND forward scroll to the harness. FIX (doyle design, cfg(windows), folds into the rc mouse handler): TRACK the harness's mouse-reporting mode by scanning its OUTPUT stream for the DECSET set/reset — ESC[?1000h/1002h/1003h (mouse on) + ESC[?1006h (SGR ext) and their ...l (off) — into a shared MouseMode{enabled,sgr} (pump writes from output, stdin reader reads); the scan survives a sequence SPLIT across output chunks (a bounded carry buffer). The mouse handler: right-button-DOWN -> bracketed clipboard paste (unchanged, REQ-RC-WIN-PASTE); ScrollUp/Down -> translate to an xterm SGR mouse report (ESC[<64;col+1;row+1M up / ESC[<65;..M down, 0-based crossterm -> 1-based xterm) and forward ONLY when enabled && sgr (else DROP — a legacy X10 report the harness may not parse is garbage); Moved/drag/left/middle -> DROP (scroll is the operator's need; click-forward risks garbage, no click-to-position). Unix UNCHANGED (no capture; the terminal scrolls natively). (v0.13.0)",
2026-06-21T23:42:57.9814766Z       "requiredStages": [
2026-06-21T23:42:57.9814941Z         "doc",
2026-06-21T23:42:57.9815027Z         "impl",
2026-06-21T23:42:57.9815109Z         "unit"
2026-06-21T23:42:57.9815198Z       ],
2026-06-21T23:42:57.9815283Z       "stages": {
2026-06-21T23:42:57.9815366Z         "doc": {
2026-06-21T23:42:57.9815462Z           "complete": true,
2026-06-21T23:42:57.9815555Z           "evidence": [
2026-06-21T23:42:57.9815638Z             {
2026-06-21T23:42:57.9815742Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T23:42:57.9815842Z               "line": 461
2026-06-21T23:42:57.9815918Z             }
2026-06-21T23:42:57.9816000Z           ]
2026-06-21T23:42:57.9816094Z         },
2026-06-21T23:42:57.9816175Z         "impl": {
2026-06-21T23:42:57.9816267Z           "complete": true,
2026-06-21T23:42:57.9816348Z           "evidence": [
2026-06-21T23:42:57.9816428Z             {
2026-06-21T23:42:57.9816519Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:42:57.9816611Z               "line": 421
2026-06-21T23:42:57.9816701Z             },
2026-06-21T23:42:57.9816786Z             {
2026-06-21T23:42:57.9816891Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:42:57.9816978Z               "line": 437
2026-06-21T23:42:57.9817067Z             }
2026-06-21T23:42:57.9817148Z           ]
2026-06-21T23:42:57.9817238Z         },
2026-06-21T23:42:57.9817342Z         "int": {
2026-06-21T23:42:57.9817431Z           "complete": false,
2026-06-21T23:42:57.9817521Z           "evidence": []
2026-06-21T23:42:57.9817603Z         },
2026-06-21T23:42:57.9817694Z         "unit": {
2026-06-21T23:42:57.9817774Z           "complete": true,
2026-06-21T23:42:57.9817860Z           "evidence": [
2026-06-21T23:42:57.9817933Z             {
2026-06-21T23:42:57.9818042Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:42:57.9818132Z               "line": 1440
2026-06-21T23:42:57.9818214Z             },
2026-06-21T23:42:57.9818299Z             {
2026-06-21T23:42:57.9818394Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:42:57.9818490Z               "line": 1459
2026-06-21T23:42:57.9818577Z             },
2026-06-21T23:42:57.9818652Z             {
2026-06-21T23:42:57.9818756Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:42:57.9818838Z               "line": 1471
2026-06-21T23:42:57.9818919Z             },
2026-06-21T23:42:57.9819100Z             {
2026-06-21T23:42:57.9819206Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:42:57.9819300Z               "line": 1499
2026-06-21T23:42:57.9819381Z             }
2026-06-21T23:42:57.9819464Z           ]
2026-06-21T23:42:57.9819549Z         }
2026-06-21T23:42:57.9819634Z       }
2026-06-21T23:42:57.9819715Z     },
2026-06-21T23:42:57.9819797Z     {
2026-06-21T23:42:57.9819897Z       "id": "REQ-RC-WIN-PASTE",
2026-06-21T23:42:57.9824607Z       "title": "In an `spt rc` session neither ctrl+V nor right-click pastes (CC explicitly supports ctrl+V). ROOT (doyle /diagnose): RawGuard does only enable_raw_mode (no bracketed paste / no mouse capture / no clipboard interception); the Windows console delivers a paste as synthetic per-char KEY EVENTs (no crossterm Event::Paste), and ctrl+V translates to bare ^V forwarded to CC — but CC runs DAEMON-SIDE with NO access to the operator's LOCAL clipboard, so remote paste is fundamentally CLIENT-ORIGINATED. A multi-line paste-as-keys also becomes a \\r submit-storm. FIX (doyle design, V0.13.0-P1-RC-PASTE-DESIGN.md, cfg(windows), folds into the bug-2 event path): on a paste gesture rc reads the LOCAL clipboard + forwards a BRACKETED PASTE (ESC[200~ + content + ESC[201~); CC has bracketed-paste mode on (its TUI sets ESC[?2004h) so it treats it as a paste — content intact, no submit-storm, harness-AGNOSTIC. ctrl+V: intercept Char('v')+CONTROL in the event loop -> read_clipboard -> bracketed paste. Right-click: RawGuard also EnableMouseCapture (disables console QuickEdit + enables ENABLE_MOUSE_INPUT so right-click surfaces as Event::Mouse on legacy cmd/powershell) -> right-button -> read_clipboard -> bracketed paste; DROP all other mouse (CC has no mouse features, operator-confirmed, so capture costs nothing). read_clipboard = clipboard-win crate (cfg(windows), minimal); empty/failed = clean no-op. Content forwarded VERBATIM (literal pasted text, no per-char translation). Unix UNCHANGED (its terminal pastes natively through the byte pump). DEPENDS ON P0 (a paste chunk must not wedge the broker). (v0.13.0)",
2026-06-21T23:42:57.9824917Z       "requiredStages": [
2026-06-21T23:42:57.9825002Z         "doc",
2026-06-21T23:42:57.9825087Z         "impl",
2026-06-21T23:42:57.9825173Z         "unit"
2026-06-21T23:42:57.9825256Z       ],
2026-06-21T23:42:57.9825336Z       "stages": {
2026-06-21T23:42:57.9825416Z         "doc": {
2026-06-21T23:42:57.9825510Z           "complete": true,
2026-06-21T23:42:57.9825592Z           "evidence": [
2026-06-21T23:42:57.9825679Z             {
2026-06-21T23:42:57.9825786Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-21T23:42:57.9825873Z               "line": 447
2026-06-21T23:42:57.9825955Z             }
2026-06-21T23:42:57.9826036Z           ]
2026-06-21T23:42:57.9826120Z         },
2026-06-21T23:42:57.9826208Z         "impl": {
2026-06-21T23:42:57.9826307Z           "complete": true,
2026-06-21T23:42:57.9826397Z           "evidence": [
2026-06-21T23:42:57.9826474Z             {
2026-06-21T23:42:57.9826579Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:42:57.9826669Z               "line": 395
2026-06-21T23:42:57.9826749Z             },
2026-06-21T23:42:57.9826832Z             {
2026-06-21T23:42:57.9826942Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:42:57.9827032Z               "line": 411
2026-06-21T23:42:57.9827113Z             },
2026-06-21T23:42:57.9827199Z             {
2026-06-21T23:42:57.9827298Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:42:57.9827389Z               "line": 454
2026-06-21T23:42:57.9827471Z             },
2026-06-21T23:42:57.9827557Z             {
2026-06-21T23:42:57.9827660Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:42:57.9827755Z               "line": 468
2026-06-21T23:42:57.9827841Z             },
2026-06-21T23:42:57.9827917Z             {
2026-06-21T23:42:57.9828020Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:42:57.9828106Z               "line": 479
2026-06-21T23:42:57.9828188Z             }
2026-06-21T23:42:57.9828273Z           ]
2026-06-21T23:42:57.9828339Z         },
2026-06-21T23:42:57.9828420Z         "int": {
2026-06-21T23:42:57.9828512Z           "complete": false,
2026-06-21T23:42:57.9828607Z           "evidence": []
2026-06-21T23:42:57.9828678Z         },
2026-06-21T23:42:57.9828774Z         "unit": {
2026-06-21T23:42:57.9828864Z           "complete": true,
2026-06-21T23:42:57.9829026Z           "evidence": [
2026-06-21T23:42:57.9829113Z             {
2026-06-21T23:42:57.9829203Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:42:57.9829292Z               "line": 1381
2026-06-21T23:42:57.9829374Z             },
2026-06-21T23:42:57.9829461Z             {
2026-06-21T23:42:57.9829566Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:42:57.9829641Z               "line": 1402
2026-06-21T23:42:57.9829733Z             },
2026-06-21T23:42:57.9829813Z             {
2026-06-21T23:42:57.9829918Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:42:57.9830004Z               "line": 1423
2026-06-21T23:42:57.9830184Z             }
2026-06-21T23:42:57.9830275Z           ]
2026-06-21T23:42:57.9830343Z         }
2026-06-21T23:42:57.9830425Z       }
2026-06-21T23:42:57.9830508Z     },
2026-06-21T23:42:57.9830589Z     {
2026-06-21T23:42:57.9830675Z       "id": "REQ-RCVIEW-1",
2026-06-21T23:42:57.9835133Z       "title": "Remote-attach controller/viewer model (CONTEXT.md:317): a session's broker OutputLog serves ONE interactive controller (input + EXCLUSIVE PTY resize; its viewport sets the size, sent on attach + every window change via crossterm Event::Resize) plus ANY NUMBER of read-only `--view` attachers (output-only, no input, no resize; client-side letterbox — center+pad when larger, clip+1-line indicator when smaller; only the local ctrl-b d detach chord). Attach intent is three-valued (`Viewer | Control | Take`, wire-default Control): Control to a FREE endpoint becomes controller, Control to a CONTROLLED endpoint is REFUSED with guidance (`--view`/`--take`) — never auto-viewer, never silent-displace. Wire adds (additive, N-1 skip-unknown): `Request.intent`, `Resize{rows,cols}` (controller-only), `Size{rows,cols}` (→viewer), `Displaced{by}` (→displaced controller). The brain-resume cursor (delivered_through, ADR-0018) tracks the CONTROLLER ONLY; viewers replay from their own from_seq and never move it. Dormancy keys on the controller ONLY: controller attach wakes / controller detach goes dormant (even with viewers present); viewer attach/detach is wake-neutral and may watch a dormant endpoint as-is. v1: viewing is gated identically to driving — a viewer runs the same access_check(Unsolicited) as a controller (watching reveals full session contents = a real disclosure); a lighter distinct watch-gate is deferred to cross-subnet/finer-consent (CONTEXT.md:317 'driving ≠ watching' = the future seam).",
2026-06-21T23:42:57.9835357Z       "requiredStages": [
2026-06-21T23:42:57.9835438Z         "doc",
2026-06-21T23:42:57.9835520Z         "impl",
2026-06-21T23:42:57.9835604Z         "unit",
2026-06-21T23:42:57.9835700Z         "int"
2026-06-21T23:42:57.9835772Z       ],
2026-06-21T23:42:57.9835863Z       "stages": {
2026-06-21T23:42:57.9835947Z         "doc": {
2026-06-21T23:42:57.9836041Z           "complete": true,
2026-06-21T23:42:57.9836133Z           "evidence": [
2026-06-21T23:42:57.9836215Z             {
2026-06-21T23:42:57.9836314Z               "path": "CONTEXT.md",
2026-06-21T23:42:57.9836400Z               "line": 342
2026-06-21T23:42:57.9836481Z             }
2026-06-21T23:42:57.9836572Z           ]
2026-06-21T23:42:57.9836652Z         },
2026-06-21T23:42:57.9836738Z         "impl": {
2026-06-21T23:42:57.9836825Z           "complete": true,
2026-06-21T23:42:57.9836920Z           "evidence": [
2026-06-21T23:42:57.9837000Z             {
2026-06-21T23:42:57.9837130Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T23:42:57.9837210Z               "line": 549
2026-06-21T23:42:57.9837296Z             },
2026-06-21T23:42:57.9837377Z             {
2026-06-21T23:42:57.9837492Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:42:57.9837592Z               "line": 705
2026-06-21T23:42:57.9837668Z             },
2026-06-21T23:42:57.9837750Z             {
2026-06-21T23:42:57.9837873Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:42:57.9837958Z               "line": 716
2026-06-21T23:42:57.9838041Z             },
2026-06-21T23:42:57.9838122Z             {
2026-06-21T23:42:57.9838239Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T23:42:57.9838334Z               "line": 41
2026-06-21T23:42:57.9838415Z             },
2026-06-21T23:42:57.9838509Z             {
2026-06-21T23:42:57.9838623Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T23:42:57.9838718Z               "line": 62
2026-06-21T23:42:57.9838801Z             },
2026-06-21T23:42:57.9838885Z             {
2026-06-21T23:42:57.9839077Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T23:42:57.9839157Z               "line": 309
2026-06-21T23:42:57.9839339Z             },
2026-06-21T23:42:57.9839424Z             {
2026-06-21T23:42:57.9839533Z               "path": "crates/spt/src/rc.rs",
2026-06-21T23:42:57.9839610Z               "line": 701
2026-06-21T23:42:57.9839697Z             }
2026-06-21T23:42:57.9839777Z           ]
2026-06-21T23:42:57.9839862Z         },
2026-06-21T23:42:57.9839939Z         "int": {
2026-06-21T23:42:57.9840021Z           "complete": true,
2026-06-21T23:42:57.9840111Z           "evidence": [
2026-06-21T23:42:57.9840191Z             {
2026-06-21T23:42:57.9840317Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T23:42:57.9840397Z               "line": 916
2026-06-21T23:42:57.9840599Z             },
2026-06-21T23:42:57.9840693Z             {
2026-06-21T23:42:57.9840812Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T23:42:57.9844371Z               "line": 956
2026-06-21T23:42:57.9844468Z             },
2026-06-21T23:42:57.9844558Z             {
2026-06-21T23:42:57.9844691Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T23:42:57.9844792Z               "line": 1003
2026-06-21T23:42:57.9844877Z             },
2026-06-21T23:42:57.9844962Z             {
2026-06-21T23:42:57.9845097Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T23:42:57.9845178Z               "line": 1155
2026-06-21T23:42:57.9845259Z             }
2026-06-21T23:42:57.9845344Z           ]
2026-06-21T23:42:57.9845427Z         },
2026-06-21T23:42:57.9845511Z         "unit": {
2026-06-21T23:42:57.9845606Z           "complete": true,
2026-06-21T23:42:57.9845698Z           "evidence": [
2026-06-21T23:42:57.9845779Z             {
2026-06-21T23:42:57.9845917Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T23:42:57.9846008Z               "line": 175
2026-06-21T23:42:57.9846094Z             },
2026-06-21T23:42:57.9846178Z             {
2026-06-21T23:42:57.9846293Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-21T23:42:57.9846385Z               "line": 195
2026-06-21T23:42:57.9846470Z             }
2026-06-21T23:42:57.9846560Z           ]
2026-06-21T23:42:57.9846645Z         }
2026-06-21T23:42:57.9846726Z       }
2026-06-21T23:42:57.9846808Z     },
2026-06-21T23:42:57.9846888Z     {
2026-06-21T23:42:57.9846969Z       "id": "REQ-REACH-1",
2026-06-21T23:42:57.9847127Z       "title": "Off-node remote-drive detection + file transfer",
2026-06-21T23:42:57.9847222Z       "requiredStages": [
2026-06-21T23:42:57.9847308Z         "impl",
2026-06-21T23:42:57.9847390Z         "unit",
2026-06-21T23:42:57.9847475Z         "int"
2026-06-21T23:42:57.9847555Z       ],
2026-06-21T23:42:57.9847637Z       "stages": {
2026-06-21T23:42:57.9847723Z         "doc": {
2026-06-21T23:42:57.9847818Z           "complete": false,
2026-06-21T23:42:57.9847908Z           "evidence": []
2026-06-21T23:42:57.9847991Z         },
2026-06-21T23:42:57.9848071Z         "impl": {
2026-06-21T23:42:57.9848157Z           "complete": true,
2026-06-21T23:42:57.9848243Z           "evidence": [
2026-06-21T23:42:57.9848320Z             {
2026-06-21T23:42:57.9848447Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:42:57.9848538Z               "line": 705
2026-06-21T23:42:57.9848611Z             },
2026-06-21T23:42:57.9848696Z             {
2026-06-21T23:42:57.9848813Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T23:42:57.9848904Z               "line": 76
2026-06-21T23:42:57.9849083Z             },
2026-06-21T23:42:57.9849168Z             {
2026-06-21T23:42:57.9849288Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T23:42:57.9849384Z               "line": 222
2026-06-21T23:42:57.9849493Z             },
2026-06-21T23:42:57.9849593Z             {
2026-06-21T23:42:57.9849713Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T23:42:57.9849793Z               "line": 422
2026-06-21T23:42:57.9849880Z             },
2026-06-21T23:42:57.9849961Z             {
2026-06-21T23:42:57.9850060Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T23:42:57.9850276Z               "line": 529
2026-06-21T23:42:57.9850361Z             },
2026-06-21T23:42:57.9850441Z             {
2026-06-21T23:42:57.9850557Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-21T23:42:57.9850647Z               "line": 39
2026-06-21T23:42:57.9850724Z             },
2026-06-21T23:42:57.9850809Z             {
2026-06-21T23:42:57.9850924Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T23:42:57.9851009Z               "line": 301
2026-06-21T23:42:57.9851095Z             },
2026-06-21T23:42:57.9851168Z             {
2026-06-21T23:42:57.9851281Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-21T23:42:57.9851459Z               "line": 88
2026-06-21T23:42:57.9851540Z             },
2026-06-21T23:42:57.9851624Z             {
2026-06-21T23:42:57.9851728Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-21T23:42:57.9851810Z               "line": 98
2026-06-21T23:42:57.9851895Z             },
2026-06-21T23:42:57.9851983Z             {
2026-06-21T23:42:57.9852103Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:42:57.9852190Z               "line": 233
2026-06-21T23:42:57.9852275Z             }
2026-06-21T23:42:57.9852360Z           ]
2026-06-21T23:42:57.9852447Z         },
2026-06-21T23:42:57.9852518Z         "int": {
2026-06-21T23:42:57.9852613Z           "complete": true,
2026-06-21T23:42:57.9852703Z           "evidence": [
2026-06-21T23:42:57.9852785Z             {
2026-06-21T23:42:57.9852914Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T23:42:57.9852994Z               "line": 415
2026-06-21T23:42:57.9853071Z             },
2026-06-21T23:42:57.9853162Z             {
2026-06-21T23:42:57.9853290Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T23:42:57.9853376Z               "line": 520
2026-06-21T23:42:57.9853458Z             },
2026-06-21T23:42:57.9853542Z             {
2026-06-21T23:42:57.9853667Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T23:42:57.9853749Z               "line": 998
2026-06-21T23:42:57.9853825Z             },
2026-06-21T23:42:57.9853895Z             {
2026-06-21T23:42:57.9854021Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T23:42:57.9854111Z               "line": 1383
2026-06-21T23:42:57.9854195Z             }
2026-06-21T23:42:57.9854281Z           ]
2026-06-21T23:42:57.9854357Z         },
2026-06-21T23:42:57.9854443Z         "unit": {
2026-06-21T23:42:57.9854531Z           "complete": true,
2026-06-21T23:42:57.9854626Z           "evidence": [
2026-06-21T23:42:57.9854703Z             {
2026-06-21T23:42:57.9854823Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T23:42:57.9854917Z               "line": 639
2026-06-21T23:42:57.9854999Z             },
2026-06-21T23:42:57.9855075Z             {
2026-06-21T23:42:57.9855179Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-21T23:42:57.9855270Z               "line": 660
2026-06-21T23:42:57.9855352Z             },
2026-06-21T23:42:57.9855442Z             {
2026-06-21T23:42:57.9855556Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-21T23:42:57.9855643Z               "line": 771
2026-06-21T23:42:57.9855728Z             },
2026-06-21T23:42:57.9855809Z             {
2026-06-21T23:42:57.9855928Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-21T23:42:57.9856006Z               "line": 93
2026-06-21T23:42:57.9856095Z             },
2026-06-21T23:42:57.9856171Z             {
2026-06-21T23:42:57.9856292Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-21T23:42:57.9856377Z               "line": 224
2026-06-21T23:42:57.9856462Z             },
2026-06-21T23:42:57.9856558Z             {
2026-06-21T23:42:57.9856669Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-21T23:42:57.9856757Z               "line": 96
2026-06-21T23:42:57.9856839Z             },
2026-06-21T23:42:57.9856926Z             {
2026-06-21T23:42:57.9857048Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-21T23:42:57.9857224Z               "line": 146
2026-06-21T23:42:57.9857311Z             },
2026-06-21T23:42:57.9857391Z             {
2026-06-21T23:42:57.9857505Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T23:42:57.9857592Z               "line": 698
2026-06-21T23:42:57.9857678Z             },
2026-06-21T23:42:57.9857758Z             {
2026-06-21T23:42:57.9857859Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-21T23:42:57.9857945Z               "line": 118
2026-06-21T23:42:57.9858026Z             },
2026-06-21T23:42:57.9858111Z             {
2026-06-21T23:42:57.9858217Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-21T23:42:57.9858378Z               "line": 148
2026-06-21T23:42:57.9858459Z             },
2026-06-21T23:42:57.9858546Z             {
2026-06-21T23:42:57.9858669Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:42:57.9858755Z               "line": 928
2026-06-21T23:42:57.9858842Z             }
2026-06-21T23:42:57.9858927Z           ]
2026-06-21T23:42:57.9859093Z         }
2026-06-21T23:42:57.9859186Z       }
2026-06-21T23:42:57.9859261Z     },
2026-06-21T23:42:57.9859346Z     {
2026-06-21T23:42:57.9859431Z       "id": "REQ-REACH-2",
2026-06-21T23:42:57.9859587Z       "title": "Remote command execution (deferred, consent-gated)",
2026-06-21T23:42:57.9859677Z       "requiredStages": [],
2026-06-21T23:42:57.9859752Z       "stages": {
2026-06-21T23:42:57.9859834Z         "doc": {
2026-06-21T23:42:57.9859921Z           "complete": false,
2026-06-21T23:42:57.9860015Z           "evidence": []
2026-06-21T23:42:57.9860101Z         },
2026-06-21T23:42:57.9860178Z         "impl": {
2026-06-21T23:42:57.9860277Z           "complete": false,
2026-06-21T23:42:57.9860367Z           "evidence": []
2026-06-21T23:42:57.9860455Z         },
2026-06-21T23:42:57.9860526Z         "int": {
2026-06-21T23:42:57.9860616Z           "complete": false,
2026-06-21T23:42:57.9860706Z           "evidence": []
2026-06-21T23:42:57.9860798Z         },
2026-06-21T23:42:57.9860879Z         "unit": {
2026-06-21T23:42:57.9860973Z           "complete": false,
2026-06-21T23:42:57.9861059Z           "evidence": []
2026-06-21T23:42:57.9861136Z         }
2026-06-21T23:42:57.9861226Z       }
2026-06-21T23:42:57.9861307Z     },
2026-06-21T23:42:57.9861389Z     {
2026-06-21T23:42:57.9861494Z       "id": "REQ-READY-AGENT-RESUME",
2026-06-21T23:42:57.9865059Z       "title": "An offline ReadyAgent shows in `spt endpoint run`'s picker Resume-from-history and resumes correctly — closing the gap that today only LiveAgents do. ROOT: a harness-hosted ready bind (ReadyAgent::start_homed, ready.rs) writes info.json DIRECTLY and never appends the session ledger (unlike the shared establish_perch:250 live path), so a ready agent — though it has a session_id — produces ZERO ledger rows → the picker's offline+local Resume-from-history (which gates on ledger rows) never offers it. FIX (1): ledger the ready bind (ReadyAgent::start_homed → sessions::append Boot, mirroring establish_perch). FIX (2): `spt endpoint run --resume <session>` honors the adapter MANIFEST's endpoint TYPE — a ReadyAgent manifest (no [session.psyche_init]) resumes as a ready endpoint (poll listener, NO psyche-host); a LiveAgent (with psyche_init) as live. NO new bringup mode + NO picker changes (operator 2026-06-18): `spt endpoint run` is the spt-hosted ENDPOINT bringup for BOTH types, the type IS the adapter-manifest's concern (psyche-host already keys on psyche_init presence) — so (2) likely already holds; VERIFY at code, build only the residual. (v0.12.0)",
2026-06-21T23:42:57.9865172Z       "requiredStages": [
2026-06-21T23:42:57.9865249Z         "doc",
2026-06-21T23:42:57.9865345Z         "impl",
2026-06-21T23:42:57.9865425Z         "unit",
2026-06-21T23:42:57.9865506Z         "int"
2026-06-21T23:42:57.9865588Z       ],
2026-06-21T23:42:57.9865673Z       "stages": {
2026-06-21T23:42:57.9865754Z         "doc": {
2026-06-21T23:42:57.9865839Z           "complete": true,
2026-06-21T23:42:57.9866036Z           "evidence": [
2026-06-21T23:42:57.9866121Z             {
2026-06-21T23:42:57.9866217Z               "path": "CONTEXT.md",
2026-06-21T23:42:57.9866293Z               "line": 372
2026-06-21T23:42:57.9866374Z             }
2026-06-21T23:42:57.9866460Z           ]
2026-06-21T23:42:57.9866542Z         },
2026-06-21T23:42:57.9866632Z         "impl": {
2026-06-21T23:42:57.9866717Z           "complete": true,
2026-06-21T23:42:57.9866808Z           "evidence": [
2026-06-21T23:42:57.9866890Z             {
2026-06-21T23:42:57.9867013Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T23:42:57.9867205Z               "line": 110
2026-06-21T23:42:57.9867294Z             }
2026-06-21T23:42:57.9867468Z           ]
2026-06-21T23:42:57.9867553Z         },
2026-06-21T23:42:57.9867637Z         "int": {
2026-06-21T23:42:57.9867722Z           "complete": true,
2026-06-21T23:42:57.9867813Z           "evidence": [
2026-06-21T23:42:57.9867895Z             {
2026-06-21T23:42:57.9868037Z               "path": "crates/spt/tests/ready_resume_ledger_e2e.rs",
2026-06-21T23:42:57.9868147Z               "line": 26
2026-06-21T23:42:57.9868223Z             }
2026-06-21T23:42:57.9868308Z           ]
2026-06-21T23:42:57.9868389Z         },
2026-06-21T23:42:57.9868467Z         "unit": {
2026-06-21T23:42:57.9868557Z           "complete": true,
2026-06-21T23:42:57.9868642Z           "evidence": [
2026-06-21T23:42:57.9868729Z             {
2026-06-21T23:42:57.9868839Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-21T23:42:57.9868924Z               "line": 320
2026-06-21T23:42:57.9869092Z             }
2026-06-21T23:42:57.9869177Z           ]
2026-06-21T23:42:57.9869263Z         }
2026-06-21T23:42:57.9869348Z       }
2026-06-21T23:42:57.9869426Z     },
2026-06-21T23:42:57.9869506Z     {
2026-06-21T23:42:57.9869601Z       "id": "REQ-REL-1",
2026-06-21T23:42:57.9869972Z       "title": "spt-releases publish-target repo: README public face, licensing split, Pages docs at the permanent lapse-proof canonical URL (ADR-0014)",
2026-06-21T23:42:57.9870077Z       "requiredStages": [
2026-06-21T23:42:57.9870161Z         "doc",
2026-06-21T23:42:57.9870247Z         "impl"
2026-06-21T23:42:57.9870327Z       ],
2026-06-21T23:42:57.9870409Z       "stages": {
2026-06-21T23:42:57.9870490Z         "doc": {
2026-06-21T23:42:57.9870580Z           "complete": true,
2026-06-21T23:42:57.9870666Z           "evidence": [
2026-06-21T23:42:57.9870748Z             {
2026-06-21T23:42:57.9870966Z               "path": "docs/adr/0014-publish-target-repo-and-lapse-proof-canonical-url.md",
2026-06-21T23:42:57.9871043Z               "line": 3
2026-06-21T23:42:57.9871129Z             }
2026-06-21T23:42:57.9871214Z           ]
2026-06-21T23:42:57.9871296Z         },
2026-06-21T23:42:57.9871391Z         "impl": {
2026-06-21T23:42:57.9871477Z           "complete": true,
2026-06-21T23:42:57.9871567Z           "evidence": [
2026-06-21T23:42:57.9871654Z             {
2026-06-21T23:42:57.9871777Z               "path": ".github/workflows/docs-publish.yml",
2026-06-21T23:42:57.9871863Z               "line": 11
2026-06-21T23:42:57.9871935Z             },
2026-06-21T23:42:57.9872011Z             {
2026-06-21T23:42:57.9872120Z               "path": "crates/xtask/src/main.rs",
2026-06-21T23:42:57.9872206Z               "line": 265
2026-06-21T23:42:57.9872293Z             }
2026-06-21T23:42:57.9872373Z           ]
2026-06-21T23:42:57.9872449Z         },
2026-06-21T23:42:57.9872525Z         "int": {
2026-06-21T23:42:57.9872623Z           "complete": false,
2026-06-21T23:42:57.9872702Z           "evidence": []
2026-06-21T23:42:57.9872782Z         },
2026-06-21T23:42:57.9872867Z         "unit": {
2026-06-21T23:42:57.9872949Z           "complete": false,
2026-06-21T23:42:57.9873033Z           "evidence": []
2026-06-21T23:42:57.9873114Z         }
2026-06-21T23:42:57.9873199Z       }
2026-06-21T23:42:57.9873271Z     },
2026-06-21T23:42:57.9873348Z     {
2026-06-21T23:42:57.9873428Z       "id": "REQ-REL-2",
2026-06-21T23:42:57.9873906Z       "title": "Release asset set consumable by the self-updater: platform binaries, SHA256SUMS, SignedRelease metadata, manifest schema, mock-adapter zip; tag-triggered cross-repo pipeline",
2026-06-21T23:42:57.9874110Z       "requiredStages": [
2026-06-21T23:42:57.9874186Z         "impl",
2026-06-21T23:42:57.9874263Z         "int"
2026-06-21T23:42:57.9874348Z       ],
2026-06-21T23:42:57.9874434Z       "stages": {
2026-06-21T23:42:57.9874516Z         "doc": {
2026-06-21T23:42:57.9874602Z           "complete": true,
2026-06-21T23:42:57.9874682Z           "evidence": [
2026-06-21T23:42:57.9874758Z             {
2026-06-21T23:42:57.9874869Z               "path": "docs/RELEASE-RUNBOOK.md",
2026-06-21T23:42:57.9875068Z               "line": 6
2026-06-21T23:42:57.9875141Z             }
2026-06-21T23:42:57.9875227Z           ]
2026-06-21T23:42:57.9875297Z         },
2026-06-21T23:42:57.9875387Z         "impl": {
2026-06-21T23:42:57.9875473Z           "complete": true,
2026-06-21T23:42:57.9875563Z           "evidence": [
2026-06-21T23:42:57.9875633Z             {
2026-06-21T23:42:57.9875751Z               "path": ".github/workflows/release.yml",
2026-06-21T23:42:57.9875837Z               "line": 16
2026-06-21T23:42:57.9875920Z             },
2026-06-21T23:42:57.9876004Z             {
2026-06-21T23:42:57.9876109Z               "path": "crates/xtask/src/main.rs",
2026-06-21T23:42:57.9876205Z               "line": 352
2026-06-21T23:42:57.9876296Z             },
2026-06-21T23:42:57.9876376Z             {
2026-06-21T23:42:57.9876482Z               "path": "crates/xtask/src/main.rs",
2026-06-21T23:42:57.9876567Z               "line": 426
2026-06-21T23:42:57.9876652Z             },
2026-06-21T23:42:57.9876739Z             {
2026-06-21T23:42:57.9876854Z               "path": "crates/xtask/src/main.rs",
2026-06-21T23:42:57.9876940Z               "line": 588
2026-06-21T23:42:57.9877025Z             },
2026-06-21T23:42:57.9877102Z             {
2026-06-21T23:42:57.9877197Z               "path": "crates/xtask/src/main.rs",
2026-06-21T23:42:57.9877287Z               "line": 720
2026-06-21T23:42:57.9877373Z             }
2026-06-21T23:42:57.9877455Z           ]
2026-06-21T23:42:57.9877539Z         },
2026-06-21T23:42:57.9877625Z         "int": {
2026-06-21T23:42:57.9877718Z           "complete": true,
2026-06-21T23:42:57.9877803Z           "evidence": [
2026-06-21T23:42:57.9877887Z             {
2026-06-21T23:42:57.9878018Z               "path": "crates/spt/tests/release_verify_e2e.rs",
2026-06-21T23:42:57.9878099Z               "line": 13
2026-06-21T23:42:57.9878183Z             }
2026-06-21T23:42:57.9878264Z           ]
2026-06-21T23:42:57.9878349Z         },
2026-06-21T23:42:57.9878431Z         "unit": {
2026-06-21T23:42:57.9878517Z           "complete": false,
2026-06-21T23:42:57.9878602Z           "evidence": []
2026-06-21T23:42:57.9878683Z         }
2026-06-21T23:42:57.9878774Z       }
2026-06-21T23:42:57.9878864Z     },
2026-06-21T23:42:57.9879027Z     {
2026-06-21T23:42:57.9879108Z       "id": "REQ-REL-3",
2026-06-21T23:42:57.9879536Z       "title": "Two-key release-signing trust anchor: primary + offline never-used recovery, both pubkeys embedded in the binary's trusted set, manual local signing (ADR-0015)",
2026-06-21T23:42:57.9879623Z       "requiredStages": [
2026-06-21T23:42:57.9879709Z         "impl",
2026-06-21T23:42:57.9879789Z         "unit"
2026-06-21T23:42:57.9879870Z       ],
2026-06-21T23:42:57.9879957Z       "stages": {
2026-06-21T23:42:57.9880034Z         "doc": {
2026-06-21T23:42:57.9880118Z           "complete": false,
2026-06-21T23:42:57.9880199Z           "evidence": []
2026-06-21T23:42:57.9880286Z         },
2026-06-21T23:42:57.9880367Z         "impl": {
2026-06-21T23:42:57.9880456Z           "complete": true,
2026-06-21T23:42:57.9880555Z           "evidence": [
2026-06-21T23:42:57.9880632Z             {
2026-06-21T23:42:57.9880754Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:42:57.9880840Z               "line": 237
2026-06-21T23:42:57.9880925Z             },
2026-06-21T23:42:57.9881007Z             {
2026-06-21T23:42:57.9881221Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:42:57.9881303Z               "line": 289
2026-06-21T23:42:57.9881379Z             },
2026-06-21T23:42:57.9881464Z             {
2026-06-21T23:42:57.9881565Z               "path": "crates/xtask/src/main.rs",
2026-06-21T23:42:57.9881655Z               "line": 329
2026-06-21T23:42:57.9881740Z             },
2026-06-21T23:42:57.9881821Z             {
2026-06-21T23:42:57.9881928Z               "path": "crates/xtask/src/main.rs",
2026-06-21T23:42:57.9882004Z               "line": 353
2026-06-21T23:42:57.9882079Z             },
2026-06-21T23:42:57.9882156Z             {
2026-06-21T23:42:57.9882261Z               "path": "crates/xtask/src/main.rs",
2026-06-21T23:42:57.9882461Z               "line": 394
2026-06-21T23:42:57.9882548Z             }
2026-06-21T23:42:57.9882632Z           ]
2026-06-21T23:42:57.9882714Z         },
2026-06-21T23:42:57.9882795Z         "int": {
2026-06-21T23:42:57.9882882Z           "complete": false,
2026-06-21T23:42:57.9882975Z           "evidence": []
2026-06-21T23:42:57.9883062Z         },
2026-06-21T23:42:57.9883135Z         "unit": {
2026-06-21T23:42:57.9883225Z           "complete": true,
2026-06-21T23:42:57.9883314Z           "evidence": [
2026-06-21T23:42:57.9883394Z             {
2026-06-21T23:42:57.9883504Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:42:57.9883598Z               "line": 1045
2026-06-21T23:42:57.9883674Z             },
2026-06-21T23:42:57.9883749Z             {
2026-06-21T23:42:57.9883875Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:42:57.9883955Z               "line": 1104
2026-06-21T23:42:57.9884045Z             }
2026-06-21T23:42:57.9884127Z           ]
2026-06-21T23:42:57.9884232Z         }
2026-06-21T23:42:57.9884341Z       }
2026-06-21T23:42:57.9884442Z     },
2026-06-21T23:42:57.9884556Z     {
2026-06-21T23:42:57.9884665Z       "id": "REQ-RUN-PICKER",
2026-06-21T23:42:57.9889559Z       "title": "Interactive `spt endpoint run` picker (ratatui TUI): bare `spt endpoint run` (no --adapter/--id) enters an in-process picker (flags-present = the REQ-HOST-RUN-1 non-interactive path, untouched). Layer 1 picks kind (Create new | Pick existing). Create-new: choose a registered kind=\"harness\" adapter with its shipped+local profiles tree-nested (registry::registered / manifest.profiles / local_profile_names) → enter a charset-validated id → start. Pick-existing: category select (left/right) over [<cwd-project> | Local node | Subnet], endpoints grouped + alphabetically sorted per category, a status square per endpoint (online green ■ / offline gray ▢ — the blue \"attached\" tri-state + Kick are DEFERRED to a broker attach-presence slice, M12-W2-RULING Q1), type-to-filter (`/`, nucleo-matcher), a pinned keybind legend, and a right-half two-pane description (harness adapter:profile · best-effort project history newest→oldest from the contextstore p-<project> branches, empty-if-none · `spt endpoint description`). Confirm layer offers status-dependent options — Attach/Start/View (rc pump / cmd_endpoint_run) · Instantiate-locally (remote) · Change-harness-adapter (offline) · Fork (cmd_fork) · Resume-from-history (offline+LOCAL only; enumerate spt_store::sessions::last_k, titles `<project> @ <ts> (…id5)`, feed session_id → cmd_endpoint_run --resume). A single action enum is the source of truth so a future tap-mode (phone PTY) layers on without re-coupling to keybinds. EVERY terminal action routes through cmd_endpoint_run / existing CLI fns — no second bringup path.",
2026-06-21T23:42:57.9889692Z       "requiredStages": [
2026-06-21T23:42:57.9889763Z         "doc",
2026-06-21T23:42:57.9889849Z         "impl",
2026-06-21T23:42:57.9889936Z         "unit"
2026-06-21T23:42:57.9890011Z       ],
2026-06-21T23:42:57.9890092Z       "stages": {
2026-06-21T23:42:57.9890168Z         "doc": {
2026-06-21T23:42:57.9890265Z           "complete": true,
2026-06-21T23:42:57.9890344Z           "evidence": [
2026-06-21T23:42:57.9890430Z             {
2026-06-21T23:42:57.9890640Z               "path": "CONTEXT.md",
2026-06-21T23:42:57.9890726Z               "line": 349
2026-06-21T23:42:57.9890807Z             }
2026-06-21T23:42:57.9890885Z           ]
2026-06-21T23:42:57.9890969Z         },
2026-06-21T23:42:57.9891054Z         "impl": {
2026-06-21T23:42:57.9891150Z           "complete": true,
2026-06-21T23:42:57.9891231Z           "evidence": [
2026-06-21T23:42:57.9891310Z             {
2026-06-21T23:42:57.9891414Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9891505Z               "line": 958
2026-06-21T23:42:57.9891582Z             },
2026-06-21T23:42:57.9891662Z             {
2026-06-21T23:42:57.9891772Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9891953Z               "line": 968
2026-06-21T23:42:57.9892043Z             },
2026-06-21T23:42:57.9892125Z             {
2026-06-21T23:42:57.9892249Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T23:42:57.9892334Z               "line": 9
2026-06-21T23:42:57.9892421Z             },
2026-06-21T23:42:57.9892516Z             {
2026-06-21T23:42:57.9892620Z               "path": "crates/spt/src/picker/data.rs",
2026-06-21T23:42:57.9892716Z               "line": 67
2026-06-21T23:42:57.9892798Z             },
2026-06-21T23:42:57.9892887Z             {
2026-06-21T23:42:57.9893002Z               "path": "crates/spt/src/picker/mod.rs",
2026-06-21T23:42:57.9893094Z               "line": 16
2026-06-21T23:42:57.9893174Z             },
2026-06-21T23:42:57.9893589Z             {
2026-06-21T23:42:57.9893714Z               "path": "crates/spt/src/picker/mod.rs",
2026-06-21T23:42:57.9893809Z               "line": 254
2026-06-21T23:42:57.9893884Z             },
2026-06-21T23:42:57.9893973Z             {
2026-06-21T23:42:57.9894079Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T23:42:57.9894163Z               "line": 11
2026-06-21T23:42:57.9894239Z             },
2026-06-21T23:42:57.9894324Z             {
2026-06-21T23:42:57.9894430Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T23:42:57.9894524Z               "line": 115
2026-06-21T23:42:57.9894605Z             },
2026-06-21T23:42:57.9894677Z             {
2026-06-21T23:42:57.9894787Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T23:42:57.9894872Z               "line": 554
2026-06-21T23:42:57.9894958Z             },
2026-06-21T23:42:57.9895041Z             {
2026-06-21T23:42:57.9895150Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T23:42:57.9895235Z               "line": 635
2026-06-21T23:42:57.9895316Z             },
2026-06-21T23:42:57.9895398Z             {
2026-06-21T23:42:57.9895507Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T23:42:57.9895597Z               "line": 694
2026-06-21T23:42:57.9895680Z             },
2026-06-21T23:42:57.9895755Z             {
2026-06-21T23:42:57.9895869Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T23:42:57.9895951Z               "line": 747
2026-06-21T23:42:57.9896027Z             },
2026-06-21T23:42:57.9896112Z             {
2026-06-21T23:42:57.9896222Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T23:42:57.9896305Z               "line": 785
2026-06-21T23:42:57.9896385Z             },
2026-06-21T23:42:57.9896474Z             {
2026-06-21T23:42:57.9896583Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T23:42:57.9896664Z               "line": 8
2026-06-21T23:42:57.9896734Z             }
2026-06-21T23:42:57.9896824Z           ]
2026-06-21T23:42:57.9896910Z         },
2026-06-21T23:42:57.9897002Z         "int": {
2026-06-21T23:42:57.9897096Z           "complete": false,
2026-06-21T23:42:57.9897186Z           "evidence": []
2026-06-21T23:42:57.9897278Z         },
2026-06-21T23:42:57.9897359Z         "unit": {
2026-06-21T23:42:57.9897454Z           "complete": true,
2026-06-21T23:42:57.9897549Z           "evidence": [
2026-06-21T23:42:57.9897630Z             {
2026-06-21T23:42:57.9897740Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9897922Z               "line": 7638
2026-06-21T23:42:57.9898007Z             },
2026-06-21T23:42:57.9898083Z             {
2026-06-21T23:42:57.9898193Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9898274Z               "line": 7649
2026-06-21T23:42:57.9898350Z             },
2026-06-21T23:42:57.9898436Z             {
2026-06-21T23:42:57.9898542Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T23:42:57.9898627Z               "line": 879
2026-06-21T23:42:57.9898708Z             },
2026-06-21T23:42:57.9898789Z             {
2026-06-21T23:42:57.9898895Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T23:42:57.9899061Z               "line": 928
2026-06-21T23:42:57.9899252Z             },
2026-06-21T23:42:57.9899337Z             {
2026-06-21T23:42:57.9899450Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T23:42:57.9899532Z               "line": 979
2026-06-21T23:42:57.9899623Z             },
2026-06-21T23:42:57.9899707Z             {
2026-06-21T23:42:57.9899814Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T23:42:57.9899890Z               "line": 996
2026-06-21T23:42:57.9899975Z             },
2026-06-21T23:42:57.9900060Z             {
2026-06-21T23:42:57.9900162Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T23:42:57.9900257Z               "line": 1005
2026-06-21T23:42:57.9900346Z             },
2026-06-21T23:42:57.9900428Z             {
2026-06-21T23:42:57.9900534Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T23:42:57.9900619Z               "line": 1016
2026-06-21T23:42:57.9900704Z             },
2026-06-21T23:42:57.9900772Z             {
2026-06-21T23:42:57.9900891Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T23:42:57.9900972Z               "line": 1038
2026-06-21T23:42:57.9901048Z             },
2026-06-21T23:42:57.9901140Z             {
2026-06-21T23:42:57.9901238Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T23:42:57.9901334Z               "line": 1057
2026-06-21T23:42:57.9901416Z             },
2026-06-21T23:42:57.9901492Z             {
2026-06-21T23:42:57.9901605Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T23:42:57.9901690Z               "line": 1107
2026-06-21T23:42:57.9901776Z             },
2026-06-21T23:42:57.9901852Z             {
2026-06-21T23:42:57.9901969Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T23:42:57.9902060Z               "line": 1136
2026-06-21T23:42:57.9902132Z             },
2026-06-21T23:42:57.9902208Z             {
2026-06-21T23:42:57.9902317Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T23:42:57.9902404Z               "line": 1149
2026-06-21T23:42:57.9902490Z             },
2026-06-21T23:42:57.9902570Z             {
2026-06-21T23:42:57.9902681Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T23:42:57.9902766Z               "line": 1215
2026-06-21T23:42:57.9902852Z             },
2026-06-21T23:42:57.9902932Z             {
2026-06-21T23:42:57.9903039Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T23:42:57.9903124Z               "line": 1256
2026-06-21T23:42:57.9903204Z             },
2026-06-21T23:42:57.9903290Z             {
2026-06-21T23:42:57.9903392Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T23:42:57.9903482Z               "line": 1272
2026-06-21T23:42:57.9903562Z             },
2026-06-21T23:42:57.9903644Z             {
2026-06-21T23:42:57.9903753Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T23:42:57.9903839Z               "line": 491
2026-06-21T23:42:57.9903920Z             },
2026-06-21T23:42:57.9904002Z             {
2026-06-21T23:42:57.9904124Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T23:42:57.9904211Z               "line": 506
2026-06-21T23:42:57.9904288Z             },
2026-06-21T23:42:57.9904369Z             {
2026-06-21T23:42:57.9904482Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T23:42:57.9904577Z               "line": 524
2026-06-21T23:42:57.9904779Z             },
2026-06-21T23:42:57.9904860Z             {
2026-06-21T23:42:57.9904966Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T23:42:57.9905052Z               "line": 546
2026-06-21T23:42:57.9905137Z             },
2026-06-21T23:42:57.9905223Z             {
2026-06-21T23:42:57.9905328Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T23:42:57.9905413Z               "line": 556
2026-06-21T23:42:57.9905499Z             },
2026-06-21T23:42:57.9905582Z             {
2026-06-21T23:42:57.9905686Z               "path": "crates/spt/src/picker/view.rs",
2026-06-21T23:42:57.9905780Z               "line": 582
2026-06-21T23:42:57.9905935Z             }
2026-06-21T23:42:57.9906024Z           ]
2026-06-21T23:42:57.9906105Z         }
2026-06-21T23:42:57.9906192Z       }
2026-06-21T23:42:57.9906273Z     },
2026-06-21T23:42:57.9906362Z     {
2026-06-21T23:42:57.9906458Z       "id": "REQ-RUN-SHORTCUT",
2026-06-21T23:42:57.9911260Z       "title": "`<basename>-<id>` launcher shortcut generation (picker `s` keybind, M12-W2-T2.4): from any pre-start options set the picker writes/updates a `<basename>-<id>` launcher at the project root baking the current selection's non-interactive `spt endpoint run` flags (terminal actions only: adapter[:profile] + id + (create|resume) + (start|attach|view); Kick/Instantiate/Change-adapter/Fork are interactive-only, not bakeable). BASENAME IS A PARAMETER (operator rev. 2026-06-14): harness-agnostic spt-core defaults to `spt` (→ `spt-<id>`); an adapter/flow OVERRIDES it (spt-claude-code → `cc`), so spt-core NEVER bakes `cc` (a harness name) into itself. The basename must be a DISTINCT token, never bare `spt` (a `spt.cmd` would shadow the real `spt.exe` only under cmd.exe cwd-first search, silently no-op in PowerShell/Unix, and self-recurse). The script is the CURRENT OS's native form — `.cmd` on Windows (NOT `.ps1`: default PATHEXT excludes `.ps1` so a bare/ext-less name never resolves one; `.cmd` is PATHEXT-resolvable), POSIX `sh` (+chmod +x) on Unix (a single portable form can't be both). The generated header documents the invocation reality (cmd.exe bare `<name>` in the project dir / PowerShell `.\\<name>` / Unix `./<name>`; a truly-bare basename on PATH = a PATH-installed launcher, `/spt:setup`'s job). Overwrite is SENTINEL-guarded: the generator writes + checks a generated-by header marker — it overwrites its own prior output freely, but REFUSES + warns if a same-named file lacks the sentinel (never clobber a user file). Requires the additive `--create` flag on `Run{}` (the default-fresh made explicit; N-1-safe).",
2026-06-21T23:42:57.9911385Z       "requiredStages": [
2026-06-21T23:42:57.9911479Z         "doc",
2026-06-21T23:42:57.9911560Z         "impl",
2026-06-21T23:42:57.9911643Z         "unit"
2026-06-21T23:42:57.9911723Z       ],
2026-06-21T23:42:57.9911798Z       "stages": {
2026-06-21T23:42:57.9911884Z         "doc": {
2026-06-21T23:42:57.9911977Z           "complete": true,
2026-06-21T23:42:57.9912075Z           "evidence": [
2026-06-21T23:42:57.9912160Z             {
2026-06-21T23:42:57.9912250Z               "path": "CONTEXT.md",
2026-06-21T23:42:57.9912332Z               "line": 390
2026-06-21T23:42:57.9912412Z             }
2026-06-21T23:42:57.9912491Z           ]
2026-06-21T23:42:57.9912572Z         },
2026-06-21T23:42:57.9912654Z         "impl": {
2026-06-21T23:42:57.9912741Z           "complete": true,
2026-06-21T23:42:57.9912830Z           "evidence": [
2026-06-21T23:42:57.9912916Z             {
2026-06-21T23:42:57.9913035Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T23:42:57.9913130Z               "line": 39
2026-06-21T23:42:57.9913216Z             },
2026-06-21T23:42:57.9913308Z             {
2026-06-21T23:42:57.9913436Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T23:42:57.9913521Z               "line": 79
2026-06-21T23:42:57.9913599Z             },
2026-06-21T23:42:57.9913679Z             {
2026-06-21T23:42:57.9913797Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T23:42:57.9913989Z               "line": 162
2026-06-21T23:42:57.9914075Z             }
2026-06-21T23:42:57.9914161Z           ]
2026-06-21T23:42:57.9914238Z         },
2026-06-21T23:42:57.9914323Z         "int": {
2026-06-21T23:42:57.9914404Z           "complete": false,
2026-06-21T23:42:57.9914495Z           "evidence": []
2026-06-21T23:42:57.9914576Z         },
2026-06-21T23:42:57.9914661Z         "unit": {
2026-06-21T23:42:57.9914752Z           "complete": true,
2026-06-21T23:42:57.9914834Z           "evidence": [
2026-06-21T23:42:57.9914915Z             {
2026-06-21T23:42:57.9915022Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T23:42:57.9915209Z               "line": 206
2026-06-21T23:42:57.9915293Z             },
2026-06-21T23:42:57.9915368Z             {
2026-06-21T23:42:57.9915488Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T23:42:57.9915564Z               "line": 222
2026-06-21T23:42:57.9915650Z             },
2026-06-21T23:42:57.9915735Z             {
2026-06-21T23:42:57.9915846Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T23:42:57.9915932Z               "line": 238
2026-06-21T23:42:57.9916011Z             },
2026-06-21T23:42:57.9916098Z             {
2026-06-21T23:42:57.9916212Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T23:42:57.9916294Z               "line": 251
2026-06-21T23:42:57.9916374Z             },
2026-06-21T23:42:57.9916456Z             {
2026-06-21T23:42:57.9916565Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-21T23:42:57.9916651Z               "line": 258
2026-06-21T23:42:57.9916737Z             }
2026-06-21T23:42:57.9916819Z           ]
2026-06-21T23:42:57.9916903Z         }
2026-06-21T23:42:57.9916989Z       }
2026-06-21T23:42:57.9917081Z     },
2026-06-21T23:42:57.9917153Z     {
2026-06-21T23:42:57.9917261Z       "id": "REQ-SEAM-ACTIVITY",
2026-06-21T23:42:57.9917439Z       "title": "Activity/idle reported via api sentinels, not PTY quiescence",
2026-06-21T23:42:57.9917537Z       "requiredStages": [
2026-06-21T23:42:57.9917623Z         "impl",
2026-06-21T23:42:57.9917709Z         "unit"
2026-06-21T23:42:57.9917799Z       ],
2026-06-21T23:42:57.9917878Z       "stages": {
2026-06-21T23:42:57.9917959Z         "doc": {
2026-06-21T23:42:57.9918054Z           "complete": false,
2026-06-21T23:42:57.9918146Z           "evidence": []
2026-06-21T23:42:57.9918231Z         },
2026-06-21T23:42:57.9918316Z         "impl": {
2026-06-21T23:42:57.9918408Z           "complete": true,
2026-06-21T23:42:57.9918498Z           "evidence": [
2026-06-21T23:42:57.9918583Z             {
2026-06-21T23:42:57.9918713Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T23:42:57.9918798Z               "line": 18
2026-06-21T23:42:57.9918883Z             },
2026-06-21T23:42:57.9919052Z             {
2026-06-21T23:42:57.9919170Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T23:42:57.9919251Z               "line": 35
2026-06-21T23:42:57.9922734Z             },
2026-06-21T23:42:57.9922849Z             {
2026-06-21T23:42:57.9922972Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T23:42:57.9923071Z               "line": 72
2026-06-21T23:42:57.9923152Z             }
2026-06-21T23:42:57.9923239Z           ]
2026-06-21T23:42:57.9923319Z         },
2026-06-21T23:42:57.9923414Z         "int": {
2026-06-21T23:42:57.9923515Z           "complete": false,
2026-06-21T23:42:57.9923596Z           "evidence": []
2026-06-21T23:42:57.9923681Z         },
2026-06-21T23:42:57.9923757Z         "unit": {
2026-06-21T23:42:57.9923854Z           "complete": true,
2026-06-21T23:42:57.9923934Z           "evidence": [
2026-06-21T23:42:57.9924015Z             {
2026-06-21T23:42:57.9924144Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T23:42:57.9924230Z               "line": 239
2026-06-21T23:42:57.9924320Z             },
2026-06-21T23:42:57.9924401Z             {
2026-06-21T23:42:57.9924516Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T23:42:57.9924740Z               "line": 256
2026-06-21T23:42:57.9924827Z             },
2026-06-21T23:42:57.9924906Z             {
2026-06-21T23:42:57.9925011Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T23:42:57.9925103Z               "line": 265
2026-06-21T23:42:57.9925174Z             }
2026-06-21T23:42:57.9925259Z           ]
2026-06-21T23:42:57.9925336Z         }
2026-06-21T23:42:57.9925418Z       }
2026-06-21T23:42:57.9925503Z     },
2026-06-21T23:42:57.9925583Z     {
2026-06-21T23:42:57.9925687Z       "id": "REQ-SEAM-CAPABILITY",
2026-06-21T23:42:57.9925834Z       "title": "Hostable endpoint-types capability declaration",
2026-06-21T23:42:57.9926029Z       "requiredStages": [
2026-06-21T23:42:57.9926115Z         "impl",
2026-06-21T23:42:57.9926201Z         "unit"
2026-06-21T23:42:57.9926295Z       ],
2026-06-21T23:42:57.9926377Z       "stages": {
2026-06-21T23:42:57.9926467Z         "doc": {
2026-06-21T23:42:57.9926558Z           "complete": false,
2026-06-21T23:42:57.9926653Z           "evidence": []
2026-06-21T23:42:57.9926735Z         },
2026-06-21T23:42:57.9926821Z         "impl": {
2026-06-21T23:42:57.9926920Z           "complete": true,
2026-06-21T23:42:57.9927007Z           "evidence": [
2026-06-21T23:42:57.9927083Z             {
2026-06-21T23:42:57.9927197Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:42:57.9927292Z               "line": 598
2026-06-21T23:42:57.9927365Z             }
2026-06-21T23:42:57.9927449Z           ]
2026-06-21T23:42:57.9927530Z         },
2026-06-21T23:42:57.9927612Z         "int": {
2026-06-21T23:42:57.9927699Z           "complete": false,
2026-06-21T23:42:57.9927778Z           "evidence": []
2026-06-21T23:42:57.9927864Z         },
2026-06-21T23:42:57.9927947Z         "unit": {
2026-06-21T23:42:57.9928028Z           "complete": true,
2026-06-21T23:42:57.9928116Z           "evidence": [
2026-06-21T23:42:57.9928197Z             {
2026-06-21T23:42:57.9928316Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:42:57.9928401Z               "line": 967
2026-06-21T23:42:57.9928486Z             }
2026-06-21T23:42:57.9928566Z           ]
2026-06-21T23:42:57.9928648Z         }
2026-06-21T23:42:57.9928735Z       }
2026-06-21T23:42:57.9928819Z     },
2026-06-21T23:42:57.9928900Z     {
2026-06-21T23:42:57.9929073Z       "id": "REQ-SEAM-HISTORY",
2026-06-21T23:42:57.9929254Z       "title": "History subsystem (fetcher / locate-normalize / native store)",
2026-06-21T23:42:57.9929339Z       "requiredStages": [
2026-06-21T23:42:57.9929443Z         "impl",
2026-06-21T23:42:57.9929535Z         "unit",
2026-06-21T23:42:57.9929617Z         "int"
2026-06-21T23:42:57.9929697Z       ],
2026-06-21T23:42:57.9929782Z       "stages": {
2026-06-21T23:42:57.9929869Z         "doc": {
2026-06-21T23:42:57.9929960Z           "complete": false,
2026-06-21T23:42:57.9930045Z           "evidence": []
2026-06-21T23:42:57.9930131Z         },
2026-06-21T23:42:57.9930203Z         "impl": {
2026-06-21T23:42:57.9930298Z           "complete": true,
2026-06-21T23:42:57.9930383Z           "evidence": [
2026-06-21T23:42:57.9930469Z             {
2026-06-21T23:42:57.9930585Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T23:42:57.9930674Z               "line": 24
2026-06-21T23:42:57.9930765Z             },
2026-06-21T23:42:57.9930842Z             {
2026-06-21T23:42:57.9930955Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T23:42:57.9931031Z               "line": 22
2026-06-21T23:42:57.9931116Z             }
2026-06-21T23:42:57.9931198Z           ]
2026-06-21T23:42:57.9931284Z         },
2026-06-21T23:42:57.9931369Z         "int": {
2026-06-21T23:42:57.9931465Z           "complete": true,
2026-06-21T23:42:57.9931556Z           "evidence": [
2026-06-21T23:42:57.9931637Z             {
2026-06-21T23:42:57.9931755Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T23:42:57.9931833Z               "line": 260
2026-06-21T23:42:57.9931918Z             }
2026-06-21T23:42:57.9932104Z           ]
2026-06-21T23:42:57.9932185Z         },
2026-06-21T23:42:57.9932266Z         "unit": {
2026-06-21T23:42:57.9932351Z           "complete": true,
2026-06-21T23:42:57.9932438Z           "evidence": [
2026-06-21T23:42:57.9932509Z             {
2026-06-21T23:42:57.9932614Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T23:42:57.9932699Z               "line": 171
2026-06-21T23:42:57.9932773Z             },
2026-06-21T23:42:57.9932862Z             {
2026-06-21T23:42:57.9932967Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T23:42:57.9933058Z               "line": 200
2026-06-21T23:42:57.9933130Z             },
2026-06-21T23:42:57.9933309Z             {
2026-06-21T23:42:57.9933409Z               "path": "crates/spt-live/src/echo.rs",
2026-06-21T23:42:57.9933494Z               "line": 220
2026-06-21T23:42:57.9933574Z             },
2026-06-21T23:42:57.9933649Z             {
2026-06-21T23:42:57.9933765Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T23:42:57.9933851Z               "line": 199
2026-06-21T23:42:57.9933936Z             },
2026-06-21T23:42:57.9934017Z             {
2026-06-21T23:42:57.9934118Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T23:42:57.9934203Z               "line": 219
2026-06-21T23:42:57.9934283Z             },
2026-06-21T23:42:57.9934366Z             {
2026-06-21T23:42:57.9934476Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T23:42:57.9934565Z               "line": 244
2026-06-21T23:42:57.9934647Z             },
2026-06-21T23:42:57.9934728Z             {
2026-06-21T23:42:57.9934838Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T23:42:57.9934923Z               "line": 276
2026-06-21T23:42:57.9935010Z             },
2026-06-21T23:42:57.9935090Z             {
2026-06-21T23:42:57.9935200Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T23:42:57.9935286Z               "line": 297
2026-06-21T23:42:57.9935363Z             },
2026-06-21T23:42:57.9935453Z             {
2026-06-21T23:42:57.9935553Z               "path": "crates/spt-live/src/history.rs",
2026-06-21T23:42:57.9935645Z               "line": 324
2026-06-21T23:42:57.9935725Z             }
2026-06-21T23:42:57.9935805Z           ]
2026-06-21T23:42:57.9935891Z         }
2026-06-21T23:42:57.9935974Z       }
2026-06-21T23:42:57.9936059Z     },
2026-06-21T23:42:57.9936134Z     {
2026-06-21T23:42:57.9936233Z       "id": "REQ-SEAM-INJECT",
2026-06-21T23:42:57.9936394Z       "title": "inject-input methods configurable per activity-state",
2026-06-21T23:42:57.9936493Z       "requiredStages": [
2026-06-21T23:42:57.9936579Z         "impl",
2026-06-21T23:42:57.9936661Z         "unit"
2026-06-21T23:42:57.9936751Z       ],
2026-06-21T23:42:57.9936831Z       "stages": {
2026-06-21T23:42:57.9936908Z         "doc": {
2026-06-21T23:42:57.9937000Z           "complete": false,
2026-06-21T23:42:57.9937094Z           "evidence": []
2026-06-21T23:42:57.9937179Z         },
2026-06-21T23:42:57.9937252Z         "impl": {
2026-06-21T23:42:57.9937357Z           "complete": true,
2026-06-21T23:42:57.9937442Z           "evidence": [
2026-06-21T23:42:57.9937523Z             {
2026-06-21T23:42:57.9937629Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T23:42:57.9937724Z               "line": 19
2026-06-21T23:42:57.9937809Z             },
2026-06-21T23:42:57.9937887Z             {
2026-06-21T23:42:57.9937996Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T23:42:57.9938077Z               "line": 111
2026-06-21T23:42:57.9938167Z             }
2026-06-21T23:42:57.9938249Z           ]
2026-06-21T23:42:57.9938334Z         },
2026-06-21T23:42:57.9938415Z         "int": {
2026-06-21T23:42:57.9938507Z           "complete": false,
2026-06-21T23:42:57.9938602Z           "evidence": []
2026-06-21T23:42:57.9938681Z         },
2026-06-21T23:42:57.9938767Z         "unit": {
2026-06-21T23:42:57.9938853Z           "complete": true,
2026-06-21T23:42:57.9939012Z           "evidence": [
2026-06-21T23:42:57.9939228Z             {
2026-06-21T23:42:57.9939337Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T23:42:57.9939427Z               "line": 345
2026-06-21T23:42:57.9939524Z             },
2026-06-21T23:42:57.9939604Z             {
2026-06-21T23:42:57.9939708Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T23:42:57.9939785Z               "line": 365
2026-06-21T23:42:57.9939862Z             }
2026-06-21T23:42:57.9939928Z           ]
2026-06-21T23:42:57.9940013Z         }
2026-06-21T23:42:57.9940095Z       }
2026-06-21T23:42:57.9940177Z     },
2026-06-21T23:42:57.9940252Z     {
2026-06-21T23:42:57.9940357Z       "id": "REQ-SEAM-POSTSPAWN",
2026-06-21T23:42:57.9940576Z       "title": "post-spawn / api bind seam with boot nonce",
2026-06-21T23:42:57.9940667Z       "requiredStages": [
2026-06-21T23:42:57.9940749Z         "impl",
2026-06-21T23:42:57.9940830Z         "unit"
2026-06-21T23:42:57.9940914Z       ],
2026-06-21T23:42:57.9940996Z       "stages": {
2026-06-21T23:42:57.9941083Z         "doc": {
2026-06-21T23:42:57.9941173Z           "complete": false,
2026-06-21T23:42:57.9941253Z           "evidence": []
2026-06-21T23:42:57.9941340Z         },
2026-06-21T23:42:57.9941436Z         "impl": {
2026-06-21T23:42:57.9941539Z           "complete": true,
2026-06-21T23:42:57.9941620Z           "evidence": [
2026-06-21T23:42:57.9941706Z             {
2026-06-21T23:42:57.9941845Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:42:57.9941948Z               "line": 18
2026-06-21T23:42:57.9942035Z             },
2026-06-21T23:42:57.9942116Z             {
2026-06-21T23:42:57.9942220Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:42:57.9942310Z               "line": 431
2026-06-21T23:42:57.9942379Z             }
2026-06-21T23:42:57.9942459Z           ]
2026-06-21T23:42:57.9942544Z         },
2026-06-21T23:42:57.9942635Z         "int": {
2026-06-21T23:42:57.9942727Z           "complete": false,
2026-06-21T23:42:57.9942807Z           "evidence": []
2026-06-21T23:42:57.9942897Z         },
2026-06-21T23:42:57.9942974Z         "unit": {
2026-06-21T23:42:57.9943061Z           "complete": true,
2026-06-21T23:42:57.9943145Z           "evidence": [
2026-06-21T23:42:57.9943226Z             {
2026-06-21T23:42:57.9943333Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:42:57.9943422Z               "line": 881
2026-06-21T23:42:57.9943508Z             },
2026-06-21T23:42:57.9943589Z             {
2026-06-21T23:42:57.9943700Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:42:57.9943774Z               "line": 891
2026-06-21T23:42:57.9943864Z             }
2026-06-21T23:42:57.9943945Z           ]
2026-06-21T23:42:57.9944026Z         }
2026-06-21T23:42:57.9944115Z       }
2026-06-21T23:42:57.9944195Z     },
2026-06-21T23:42:57.9944277Z     {
2026-06-21T23:42:57.9944373Z       "id": "REQ-SEAM-PSYCHE",
2026-06-21T23:42:57.9944510Z       "title": "spawn-psyche seam (fresh + resume templates)",
2026-06-21T23:42:57.9944601Z       "requiredStages": [
2026-06-21T23:42:57.9944693Z         "impl",
2026-06-21T23:42:57.9944773Z         "unit",
2026-06-21T23:42:57.9944853Z         "int"
2026-06-21T23:42:57.9944936Z       ],
2026-06-21T23:42:57.9945021Z       "stages": {
2026-06-21T23:42:57.9945106Z         "doc": {
2026-06-21T23:42:57.9945197Z           "complete": false,
2026-06-21T23:42:57.9945284Z           "evidence": []
2026-06-21T23:42:57.9945365Z         },
2026-06-21T23:42:57.9945445Z         "impl": {
2026-06-21T23:42:57.9945536Z           "complete": true,
2026-06-21T23:42:57.9945617Z           "evidence": [
2026-06-21T23:42:57.9945703Z             {
2026-06-21T23:42:57.9945812Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T23:42:57.9945904Z               "line": 19
2026-06-21T23:42:57.9945989Z             },
2026-06-21T23:42:57.9946080Z             {
2026-06-21T23:42:57.9946190Z               "path": "crates/spt/src/api/live.rs",
2026-06-21T23:42:57.9946276Z               "line": 12
2026-06-21T23:42:57.9946360Z             },
2026-06-21T23:42:57.9946509Z             {
2026-06-21T23:42:57.9946623Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:42:57.9946708Z               "line": 301
2026-06-21T23:42:57.9946788Z             }
2026-06-21T23:42:57.9946861Z           ]
2026-06-21T23:42:57.9946945Z         },
2026-06-21T23:42:57.9947025Z         "int": {
2026-06-21T23:42:57.9947105Z           "complete": true,
2026-06-21T23:42:57.9947201Z           "evidence": [
2026-06-21T23:42:57.9947278Z             {
2026-06-21T23:42:57.9947396Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T23:42:57.9947478Z               "line": 259
2026-06-21T23:42:57.9947626Z             }
2026-06-21T23:42:57.9947711Z           ]
2026-06-21T23:42:57.9947788Z         },
2026-06-21T23:42:57.9947870Z         "unit": {
2026-06-21T23:42:57.9947955Z           "complete": true,
2026-06-21T23:42:57.9948044Z           "evidence": [
2026-06-21T23:42:57.9948127Z             {
2026-06-21T23:42:57.9948231Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T23:42:57.9948317Z               "line": 195
2026-06-21T23:42:57.9948393Z             },
2026-06-21T23:42:57.9948471Z             {
2026-06-21T23:42:57.9948579Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T23:42:57.9948665Z               "line": 202
2026-06-21T23:42:57.9948747Z             },
2026-06-21T23:42:57.9948828Z             {
2026-06-21T23:42:57.9948931Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-21T23:42:57.9949134Z               "line": 225
2026-06-21T23:42:57.9949214Z             },
2026-06-21T23:42:57.9949298Z             {
2026-06-21T23:42:57.9949398Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-21T23:42:57.9949493Z               "line": 106
2026-06-21T23:42:57.9949573Z             },
2026-06-21T23:42:57.9949648Z             {
2026-06-21T23:42:57.9949754Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-21T23:42:57.9949836Z               "line": 137
2026-06-21T23:42:57.9949925Z             },
2026-06-21T23:42:57.9950006Z             {
2026-06-21T23:42:57.9950117Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-21T23:42:57.9950193Z               "line": 161
2026-06-21T23:42:57.9950278Z             }
2026-06-21T23:42:57.9950350Z           ]
2026-06-21T23:42:57.9950436Z         }
2026-06-21T23:42:57.9950522Z       }
2026-06-21T23:42:57.9950602Z     },
2026-06-21T23:42:57.9950685Z     {
2026-06-21T23:42:57.9950770Z       "id": "REQ-SEAM-RESUME",
2026-06-21T23:42:57.9950951Z       "title": "resume-session seam (fresh-with-preload / continue-existing)",
2026-06-21T23:42:57.9951037Z       "requiredStages": [
2026-06-21T23:42:57.9951118Z         "impl",
2026-06-21T23:42:57.9951208Z         "unit"
2026-06-21T23:42:57.9951289Z       ],
2026-06-21T23:42:57.9951371Z       "stages": {
2026-06-21T23:42:57.9951451Z         "doc": {
2026-06-21T23:42:57.9951537Z           "complete": false,
2026-06-21T23:42:57.9951634Z           "evidence": []
2026-06-21T23:42:57.9951715Z         },
2026-06-21T23:42:57.9951803Z         "impl": {
2026-06-21T23:42:57.9951890Z           "complete": true,
2026-06-21T23:42:57.9951982Z           "evidence": [
2026-06-21T23:42:57.9952058Z             {
2026-06-21T23:42:57.9952161Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T23:42:57.9952246Z               "line": 19
2026-06-21T23:42:57.9952333Z             }
2026-06-21T23:42:57.9952419Z           ]
2026-06-21T23:42:57.9952489Z         },
2026-06-21T23:42:57.9952575Z         "int": {
2026-06-21T23:42:57.9952667Z           "complete": false,
2026-06-21T23:42:57.9952753Z           "evidence": []
2026-06-21T23:42:57.9952823Z         },
2026-06-21T23:42:57.9952924Z         "unit": {
2026-06-21T23:42:57.9953024Z           "complete": true,
2026-06-21T23:42:57.9953119Z           "evidence": [
2026-06-21T23:42:57.9953195Z             {
2026-06-21T23:42:57.9953306Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T23:42:57.9953396Z               "line": 201
2026-06-21T23:42:57.9953573Z             },
2026-06-21T23:42:57.9953658Z             {
2026-06-21T23:42:57.9953762Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T23:42:57.9953849Z               "line": 223
2026-06-21T23:42:57.9953936Z             },
2026-06-21T23:42:57.9954015Z             {
2026-06-21T23:42:57.9954130Z               "path": "crates/spt-live/src/resume.rs",
2026-06-21T23:42:57.9954207Z               "line": 244
2026-06-21T23:42:57.9954297Z             }
2026-06-21T23:42:57.9954377Z           ]
2026-06-21T23:42:57.9954453Z         }
2026-06-21T23:42:57.9954534Z       }
2026-06-21T23:42:57.9954619Z     },
2026-06-21T23:42:57.9954699Z     {
2026-06-21T23:42:57.9954895Z       "id": "REQ-SEAM-SPAWN",
2026-06-21T23:42:57.9954990Z       "title": "spawn-session seam",
2026-06-21T23:42:57.9955080Z       "requiredStages": [
2026-06-21T23:42:57.9955161Z         "impl",
2026-06-21T23:42:57.9955248Z         "unit"
2026-06-21T23:42:57.9955328Z       ],
2026-06-21T23:42:57.9955414Z       "stages": {
2026-06-21T23:42:57.9955496Z         "doc": {
2026-06-21T23:42:57.9955581Z           "complete": false,
2026-06-21T23:42:57.9955681Z           "evidence": []
2026-06-21T23:42:57.9955757Z         },
2026-06-21T23:42:57.9955849Z         "impl": {
2026-06-21T23:42:57.9955925Z           "complete": true,
2026-06-21T23:42:57.9956019Z           "evidence": [
2026-06-21T23:42:57.9956096Z             {
2026-06-21T23:42:57.9956229Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T23:42:57.9956320Z               "line": 20
2026-06-21T23:42:57.9956396Z             }
2026-06-21T23:42:57.9956484Z           ]
2026-06-21T23:42:57.9956563Z         },
2026-06-21T23:42:57.9956658Z         "int": {
2026-06-21T23:42:57.9956745Z           "complete": false,
2026-06-21T23:42:57.9956831Z           "evidence": []
2026-06-21T23:42:57.9956925Z         },
2026-06-21T23:42:57.9957007Z         "unit": {
2026-06-21T23:42:57.9957099Z           "complete": true,
2026-06-21T23:42:57.9957188Z           "evidence": [
2026-06-21T23:42:57.9957283Z             {
2026-06-21T23:42:57.9957396Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T23:42:57.9957486Z               "line": 608
2026-06-21T23:42:57.9957571Z             },
2026-06-21T23:42:57.9957651Z             {
2026-06-21T23:42:57.9957762Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T23:42:57.9957843Z               "line": 615
2026-06-21T23:42:57.9957928Z             },
2026-06-21T23:42:57.9958000Z             {
2026-06-21T23:42:57.9958115Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T23:42:57.9958200Z               "line": 721
2026-06-21T23:42:57.9958295Z             },
2026-06-21T23:42:57.9958387Z             {
2026-06-21T23:42:57.9958501Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T23:42:57.9958591Z               "line": 727
2026-06-21T23:42:57.9958672Z             },
2026-06-21T23:42:57.9958759Z             {
2026-06-21T23:42:57.9958882Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T23:42:57.9959040Z               "line": 752
2026-06-21T23:42:57.9959125Z             },
2026-06-21T23:42:57.9959201Z             {
2026-06-21T23:42:57.9959322Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-21T23:42:57.9959412Z               "line": 789
2026-06-21T23:42:57.9959497Z             }
2026-06-21T23:42:57.9959583Z           ]
2026-06-21T23:42:57.9959661Z         }
2026-06-21T23:42:57.9959746Z       }
2026-06-21T23:42:57.9959825Z     },
2026-06-21T23:42:57.9959911Z     {
2026-06-21T23:42:57.9960006Z       "id": "REQ-SEAM-UPDATE",
2026-06-21T23:42:57.9960157Z       "title": "Adapter-update avenue (file-pull / delegated command)",
2026-06-21T23:42:57.9960266Z       "requiredStages": [
2026-06-21T23:42:57.9960353Z         "impl",
2026-06-21T23:42:57.9960434Z         "unit"
2026-06-21T23:42:57.9960513Z       ],
2026-06-21T23:42:57.9960590Z       "stages": {
2026-06-21T23:42:57.9960668Z         "doc": {
2026-06-21T23:42:57.9960763Z           "complete": false,
2026-06-21T23:42:57.9960963Z           "evidence": []
2026-06-21T23:42:57.9961039Z         },
2026-06-21T23:42:57.9961124Z         "impl": {
2026-06-21T23:42:57.9961215Z           "complete": true,
2026-06-21T23:42:57.9961311Z           "evidence": [
2026-06-21T23:42:57.9961396Z             {
2026-06-21T23:42:57.9961530Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T23:42:57.9961621Z               "line": 28
2026-06-21T23:42:57.9961701Z             },
2026-06-21T23:42:57.9961792Z             {
2026-06-21T23:42:57.9961912Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T23:42:57.9962002Z               "line": 88
2026-06-21T23:42:57.9962194Z             }
2026-06-21T23:42:57.9962275Z           ]
2026-06-21T23:42:57.9962359Z         },
2026-06-21T23:42:57.9962440Z         "int": {
2026-06-21T23:42:57.9962523Z           "complete": false,
2026-06-21T23:42:57.9962608Z           "evidence": []
2026-06-21T23:42:57.9962688Z         },
2026-06-21T23:42:57.9962778Z         "unit": {
2026-06-21T23:42:57.9962864Z           "complete": true,
2026-06-21T23:42:57.9962946Z           "evidence": [
2026-06-21T23:42:57.9963026Z             {
2026-06-21T23:42:57.9963150Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T23:42:57.9963237Z               "line": 326
2026-06-21T23:42:57.9963318Z             },
2026-06-21T23:42:57.9963397Z             {
2026-06-21T23:42:57.9963528Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T23:42:57.9963618Z               "line": 337
2026-06-21T23:42:57.9963698Z             }
2026-06-21T23:42:57.9963770Z           ]
2026-06-21T23:42:57.9963852Z         }
2026-06-21T23:42:57.9963941Z       }
2026-06-21T23:42:57.9964013Z     },
2026-06-21T23:42:57.9964099Z     {
2026-06-21T23:42:57.9964190Z       "id": "REQ-SEC-1",
2026-06-21T23:42:57.9964571Z       "title": "Per-endpoint access whitelist: origin-node gate, stateful-firewall (reply/outbound exempt), node-now/user-later, outer gate before grants",
2026-06-21T23:42:57.9964666Z       "requiredStages": [
2026-06-21T23:42:57.9964743Z         "impl",
2026-06-21T23:42:57.9964825Z         "unit"
2026-06-21T23:42:57.9964909Z       ],
2026-06-21T23:42:57.9964994Z       "stages": {
2026-06-21T23:42:57.9965080Z         "doc": {
2026-06-21T23:42:57.9965170Z           "complete": false,
2026-06-21T23:42:57.9965264Z           "evidence": []
2026-06-21T23:42:57.9965340Z         },
2026-06-21T23:42:57.9965426Z         "impl": {
2026-06-21T23:42:57.9965518Z           "complete": true,
2026-06-21T23:42:57.9965607Z           "evidence": [
2026-06-21T23:42:57.9965693Z             {
2026-06-21T23:42:57.9965803Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T23:42:57.9965898Z               "line": 86
2026-06-21T23:42:57.9965979Z             },
2026-06-21T23:42:57.9966061Z             {
2026-06-21T23:42:57.9966180Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T23:42:57.9966274Z               "line": 116
2026-06-21T23:42:57.9966366Z             },
2026-06-21T23:42:57.9966447Z             {
2026-06-21T23:42:57.9966565Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T23:42:57.9966656Z               "line": 130
2026-06-21T23:42:57.9966743Z             },
2026-06-21T23:42:57.9966828Z             {
2026-06-21T23:42:57.9966942Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T23:42:57.9967034Z               "line": 109
2026-06-21T23:42:57.9967242Z             },
2026-06-21T23:42:57.9967334Z             {
2026-06-21T23:42:57.9967442Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T23:42:57.9967533Z               "line": 130
2026-06-21T23:42:57.9967621Z             },
2026-06-21T23:42:57.9967692Z             {
2026-06-21T23:42:57.9967809Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T23:42:57.9967894Z               "line": 143
2026-06-21T23:42:57.9967981Z             },
2026-06-21T23:42:57.9968061Z             {
2026-06-21T23:42:57.9968169Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T23:42:57.9968332Z               "line": 209
2026-06-21T23:42:57.9968417Z             },
2026-06-21T23:42:57.9968503Z             {
2026-06-21T23:42:57.9968608Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T23:42:57.9968699Z               "line": 235
2026-06-21T23:42:57.9968784Z             },
2026-06-21T23:42:57.9968869Z             {
2026-06-21T23:42:57.9969052Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9969141Z               "line": 5295
2026-06-21T23:42:57.9969218Z             }
2026-06-21T23:42:57.9969300Z           ]
2026-06-21T23:42:57.9969385Z         },
2026-06-21T23:42:57.9969562Z         "int": {
2026-06-21T23:42:57.9969652Z           "complete": false,
2026-06-21T23:42:57.9969747Z           "evidence": []
2026-06-21T23:42:57.9969828Z         },
2026-06-21T23:42:57.9969906Z         "unit": {
2026-06-21T23:42:57.9969991Z           "complete": true,
2026-06-21T23:42:57.9970081Z           "evidence": [
2026-06-21T23:42:57.9970168Z             {
2026-06-21T23:42:57.9970292Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T23:42:57.9970372Z               "line": 142
2026-06-21T23:42:57.9970456Z             },
2026-06-21T23:42:57.9970548Z             {
2026-06-21T23:42:57.9970655Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T23:42:57.9970749Z               "line": 194
2026-06-21T23:42:57.9970826Z             },
2026-06-21T23:42:57.9970908Z             {
2026-06-21T23:42:57.9971017Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-21T23:42:57.9971102Z               "line": 235
2026-06-21T23:42:57.9971185Z             },
2026-06-21T23:42:57.9971266Z             {
2026-06-21T23:42:57.9971384Z               "path": "crates/spt-daemon/tests/access.rs",
2026-06-21T23:42:57.9971465Z               "line": 140
2026-06-21T23:42:57.9971551Z             },
2026-06-21T23:42:57.9971637Z             {
2026-06-21T23:42:57.9971746Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T23:42:57.9971838Z               "line": 247
2026-06-21T23:42:57.9971918Z             },
2026-06-21T23:42:57.9971995Z             {
2026-06-21T23:42:57.9972100Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T23:42:57.9972191Z               "line": 277
2026-06-21T23:42:57.9972276Z             },
2026-06-21T23:42:57.9972352Z             {
2026-06-21T23:42:57.9972468Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T23:42:57.9972552Z               "line": 310
2026-06-21T23:42:57.9972639Z             },
2026-06-21T23:42:57.9972720Z             {
2026-06-21T23:42:57.9972835Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T23:42:57.9972919Z               "line": 329
2026-06-21T23:42:57.9972991Z             },
2026-06-21T23:42:57.9973078Z             {
2026-06-21T23:42:57.9973182Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T23:42:57.9973267Z               "line": 362
2026-06-21T23:42:57.9973352Z             },
2026-06-21T23:42:57.9973434Z             {
2026-06-21T23:42:57.9973539Z               "path": "crates/spt-store/src/access.rs",
2026-06-21T23:42:57.9973624Z               "line": 386
2026-06-21T23:42:57.9973710Z             },
2026-06-21T23:42:57.9973787Z             {
2026-06-21T23:42:57.9973892Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9973986Z               "line": 8296
2026-06-21T23:42:57.9974068Z             }
2026-06-21T23:42:57.9974154Z           ]
2026-06-21T23:42:57.9974235Z         }
2026-06-21T23:42:57.9974321Z       }
2026-06-21T23:42:57.9974397Z     },
2026-06-21T23:42:57.9974483Z     {
2026-06-21T23:42:57.9974578Z       "id": "REQ-SEND-SPT-HOSTED",
2026-06-21T23:42:57.9978412Z       "title": "An inbound `spt send` is DELIVERED to an spt-hosted endpoint (brought up via `spt endpoint run` → `api bind`, broker holds its PTY, NO `api listen` relay). Today cmd_bind→establish_perch (api/startup.rs ~441) writes info.json + ready marker + controllable=Some(true) but registers NO message-listener / NO address, so deliver.rs resolve_address→None→spool (deliver.rs:132-140) and the message NEVER reaches the live PTY — the endpoint reads 'online' (ready marker) yet `spt send` silently SPOOLS ('online but not deliverable' lie). Per CONTEXT:187-188 the daemon owns the PTY and delivers, manifest-configurable per activity-state (direct PTY injection / relay / HTTP). FIX: route an inbound send for an spt-hosted target through the daemon → broker InputReq → session.write_input PTY-inject (broker.rs dispatch_input/write_input ~988-1022), the same path the brain uses; the live-delivery handshake must report Sent (not Queued) and stop the spool-only fallback for a broker-hosted, PTY-resident endpoint. Detection is local: controllable==Some(true) + spt-hosted state + resolve_address==None. = the spt-core HALF of the wall-b finding (perri owns the adapter half: bind-hook fired-zero-perch + the missing endpoint-run int test). (post-v0.10.0)",
2026-06-21T23:42:57.9978710Z       "requiredStages": [
2026-06-21T23:42:57.9978810Z         "impl",
2026-06-21T23:42:57.9978892Z         "unit",
2026-06-21T23:42:57.9979048Z         "int"
2026-06-21T23:42:57.9979124Z       ],
2026-06-21T23:42:57.9979212Z       "stages": {
2026-06-21T23:42:57.9979297Z         "doc": {
2026-06-21T23:42:57.9979392Z           "complete": false,
2026-06-21T23:42:57.9979493Z           "evidence": []
2026-06-21T23:42:57.9979573Z         },
2026-06-21T23:42:57.9979663Z         "impl": {
2026-06-21T23:42:57.9979754Z           "complete": true,
2026-06-21T23:42:57.9979841Z           "evidence": [
2026-06-21T23:42:57.9979926Z             {
2026-06-21T23:42:57.9980031Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T23:42:57.9980132Z               "line": 1160
2026-06-21T23:42:57.9980212Z             },
2026-06-21T23:42:57.9980293Z             {
2026-06-21T23:42:57.9980413Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:42:57.9980499Z               "line": 1942
2026-06-21T23:42:57.9980583Z             },
2026-06-21T23:42:57.9980670Z             {
2026-06-21T23:42:57.9980781Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9980861Z               "line": 2850
2026-06-21T23:42:57.9980950Z             }
2026-06-21T23:42:57.9981031Z           ]
2026-06-21T23:42:57.9981112Z         },
2026-06-21T23:42:57.9981197Z         "int": {
2026-06-21T23:42:57.9981287Z           "complete": true,
2026-06-21T23:42:57.9981382Z           "evidence": [
2026-06-21T23:42:57.9981458Z             {
2026-06-21T23:42:57.9981582Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T23:42:57.9981672Z               "line": 189
2026-06-21T23:42:57.9981755Z             },
2026-06-21T23:42:57.9981835Z             {
2026-06-21T23:42:57.9981949Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-21T23:42:57.9982030Z               "line": 524
2026-06-21T23:42:57.9982111Z             }
2026-06-21T23:42:57.9982197Z           ]
2026-06-21T23:42:57.9982283Z         },
2026-06-21T23:42:57.9982365Z         "unit": {
2026-06-21T23:42:57.9982460Z           "complete": true,
2026-06-21T23:42:57.9982545Z           "evidence": [
2026-06-21T23:42:57.9982626Z             {
2026-06-21T23:42:57.9982732Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T23:42:57.9982822Z               "line": 980
2026-06-21T23:42:57.9982903Z             },
2026-06-21T23:42:57.9982984Z             {
2026-06-21T23:42:57.9983089Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:57.9983179Z               "line": 7486
2026-06-21T23:42:57.9983260Z             }
2026-06-21T23:42:57.9983328Z           ]
2026-06-21T23:42:57.9983413Z         }
2026-06-21T23:42:57.9983503Z       }
2026-06-21T23:42:57.9983590Z     },
2026-06-21T23:42:57.9983672Z     {
2026-06-21T23:42:57.9983780Z       "id": "REQ-SESSION-RESUME-TEMPLATE",
2026-06-21T23:42:57.9990838Z       "title": "Resuming an endpoint session that HAS conversation history brings up a BLANK session. ROOT (doyle, code-grounded + CONTEXT — case-3 spt-core MISSING feature, NOT a perri docs-miss): CONTEXT L127-129 already defines the resume-session seam ('continue-existing: resume an existing harness session under the adapter — its NATIVE resume'), and the manifest already has the resume-variant pattern (Session has BOTH psyche_init AND psyche_resume, manifest.rs:217-219) — but the agent's own session has ONLY self_ (`[session.self]`, no resume sibling). cmd_endpoint_run (cli.rs:1304) re-passes the session_id through `[session.self]` on resume (resume.unwrap_or_else(mint_session_id)), so the adapter's FRESH command (e.g. `claude --session-id ..`) runs again instead of the harness NATIVE resume (`claude -r ..`) -> CC starts a fresh transcript -> blank. spt-core forwards session_id + cwd faithfully; it just has no way to express the native-resume invocation. SECOND GAP: CC resolves a transcript by session_id + cwd, but the session ledger records only {ts, session_id, trigger} (no cwd), so picker Resume-from-history (cross-project rows) can't restore the right cwd. FIX (doyle design, V0.13.0-P2-SESSION-RESUME-DESIGN.md, mirrors psyche_init->psyche_resume exactly): (A) add a `[session.resume]` role (resume: Option<SessionRole> on Session + roles()/is_empty()); cmd_endpoint_run selects it when --resume is set AND it's declared (fill {id}/{session_id}=resumed id/{session_name} + the resume cwd), else FALL BACK to `[session.self]` (full back-compat). (B) record cwd PER ledger row (operator ruling): {ts, session_id, trigger, cwd} additive serde-default; resume cwd = resumed row cwd -> else perch info.cwd -> else current_dir (back-compat for old rows + single-project endpoints); picker threads the selected row's cwd through Outcome::Run -> cmd_endpoint_run. (C) public docs (MANIFEST + harness-contract) teach `[session.resume]` so perri builds the adapter side BLIND. Adapter follow-on (perri, AFTER spt-core ships+docs): declare `[session.resume] command = claude -r {session_id} --remote-control {id} --dangerously-skip-permissions` from the resume cwd. Completes REQ-READY-AGENT-RESUME / REQ-RUN-PICKER resume-from-history. (v0.13.0)",
2026-06-21T23:42:57.9991148Z       "requiredStages": [
2026-06-21T23:42:57.9991230Z         "doc",
2026-06-21T23:42:57.9991312Z         "impl",
2026-06-21T23:42:57.9991398Z         "unit",
2026-06-21T23:42:57.9991477Z         "int"
2026-06-21T23:42:57.9991558Z       ],
2026-06-21T23:42:57.9991639Z       "stages": {
2026-06-21T23:42:57.9991725Z         "doc": {
2026-06-21T23:42:57.9991818Z           "complete": true,
2026-06-21T23:42:57.9991898Z           "evidence": [
2026-06-21T23:42:57.9991980Z             {
2026-06-21T23:42:57.9992118Z               "path": "docs-site/src/harness-contract/manifest.md",
2026-06-21T23:42:57.9992209Z               "line": 130
2026-06-21T23:42:57.9992290Z             },
2026-06-21T23:42:57.9992376Z             {
2026-06-21T23:42:57.9992475Z               "path": "docs/MANIFEST.md",
2026-06-21T23:42:57.9992561Z               "line": 96
2026-06-21T23:42:57.9992644Z             }
2026-06-21T23:42:57.9992724Z           ]
2026-06-21T23:42:57.9992819Z         },
2026-06-21T23:42:57.9992901Z         "impl": {
2026-06-21T23:42:57.9993001Z           "complete": true,
2026-06-21T23:42:57.9993091Z           "evidence": [
2026-06-21T23:42:57.9993163Z             {
2026-06-21T23:42:57.9993292Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T23:42:57.9993377Z               "line": 77
2026-06-21T23:42:57.9993468Z             },
2026-06-21T23:42:57.9993549Z             {
2026-06-21T23:42:57.9993682Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T23:42:57.9993777Z               "line": 183
2026-06-21T23:42:57.9993860Z             },
2026-06-21T23:42:57.9993936Z             {
2026-06-21T23:42:57.9994068Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:42:57.9997465Z               "line": 222
2026-06-21T23:42:57.9997564Z             },
2026-06-21T23:42:57.9997659Z             {
2026-06-21T23:42:57.9997794Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T23:42:57.9997973Z               "line": 71
2026-06-21T23:42:57.9998056Z             },
2026-06-21T23:42:57.9998132Z             {
2026-06-21T23:42:57.9998260Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T23:42:57.9998346Z               "line": 176
2026-06-21T23:42:57.9998428Z             }
2026-06-21T23:42:57.9998508Z           ]
2026-06-21T23:42:57.9998593Z         },
2026-06-21T23:42:57.9998676Z         "int": {
2026-06-21T23:42:57.9998757Z           "complete": true,
2026-06-21T23:42:57.9998837Z           "evidence": [
2026-06-21T23:42:57.9998922Z             {
2026-06-21T23:42:57.9999142Z               "path": "crates/spt/tests/resume_template_e2e.rs",
2026-06-21T23:42:57.9999368Z               "line": 25
2026-06-21T23:42:57.9999443Z             }
2026-06-21T23:42:57.9999527Z           ]
2026-06-21T23:42:57.9999603Z         },
2026-06-21T23:42:57.9999689Z         "unit": {
2026-06-21T23:42:57.9999769Z           "complete": true,
2026-06-21T23:42:57.9999863Z           "evidence": [
2026-06-21T23:42:57.9999955Z             {
2026-06-21T23:42:58.0000074Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T23:42:58.0000164Z               "line": 341
2026-06-21T23:42:58.0000245Z             },
2026-06-21T23:42:58.0000327Z             {
2026-06-21T23:42:58.0000460Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-21T23:42:58.0000540Z               "line": 391
2026-06-21T23:42:58.0000627Z             },
2026-06-21T23:42:58.0000703Z             {
2026-06-21T23:42:58.0000831Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:42:58.0000908Z               "line": 1244
2026-06-21T23:42:58.0000990Z             },
2026-06-21T23:42:58.0001090Z             {
2026-06-21T23:42:58.0001208Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T23:42:58.0001295Z               "line": 184
2026-06-21T23:42:58.0001370Z             },
2026-06-21T23:42:58.0001456Z             {
2026-06-21T23:42:58.0001572Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T23:42:58.0001657Z               "line": 208
2026-06-21T23:42:58.0001737Z             },
2026-06-21T23:42:58.0001809Z             {
2026-06-21T23:42:58.0001920Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T23:42:58.0002005Z               "line": 236
2026-06-21T23:42:58.0002085Z             },
2026-06-21T23:42:58.0002160Z             {
2026-06-21T23:42:58.0002280Z               "path": "crates/spt/src/picker/model.rs",
2026-06-21T23:42:58.0002364Z               "line": 945
2026-06-21T23:42:58.0002445Z             }
2026-06-21T23:42:58.0002526Z           ]
2026-06-21T23:42:58.0002612Z         }
2026-06-21T23:42:58.0002707Z       }
2026-06-21T23:42:58.0002788Z     },
2026-06-21T23:42:58.0002870Z     {
2026-06-21T23:42:58.0002955Z       "id": "REQ-SHELL-1",
2026-06-21T23:42:58.0003824Z       "title": "Shell hosting machinery: shell perch under the owner (type/owner/adapter_name/status/alias), broker-launched binary + api bind local-link handshake, the three channels (command durable, text+file durable + progress-queryable, sensory REST-only never spooled + dropped-unless-owner-live), owner exclusivity (CONTEXT Shell model)",
2026-06-21T23:42:58.0003927Z       "requiredStages": [
2026-06-21T23:42:58.0004013Z         "impl",
2026-06-21T23:42:58.0004100Z         "unit",
2026-06-21T23:42:58.0004182Z         "int"
2026-06-21T23:42:58.0004261Z       ],
2026-06-21T23:42:58.0004352Z       "stages": {
2026-06-21T23:42:58.0004430Z         "doc": {
2026-06-21T23:42:58.0004515Z           "complete": false,
2026-06-21T23:42:58.0004599Z           "evidence": []
2026-06-21T23:42:58.0004686Z         },
2026-06-21T23:42:58.0004768Z         "impl": {
2026-06-21T23:42:58.0004867Z           "complete": true,
2026-06-21T23:42:58.0004957Z           "evidence": [
2026-06-21T23:42:58.0005037Z             {
2026-06-21T23:42:58.0005153Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T23:42:58.0005238Z               "line": 189
2026-06-21T23:42:58.0005319Z             },
2026-06-21T23:42:58.0005510Z             {
2026-06-21T23:42:58.0005629Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T23:42:58.0005725Z               "line": 268
2026-06-21T23:42:58.0005806Z             },
2026-06-21T23:42:58.0005891Z             {
2026-06-21T23:42:58.0006006Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T23:42:58.0006102Z               "line": 27
2026-06-21T23:42:58.0006187Z             },
2026-06-21T23:42:58.0006268Z             {
2026-06-21T23:42:58.0006389Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T23:42:58.0006473Z               "line": 52
2026-06-21T23:42:58.0006645Z             },
2026-06-21T23:42:58.0006722Z             {
2026-06-21T23:42:58.0006845Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T23:42:58.0006935Z               "line": 144
2026-06-21T23:42:58.0007018Z             },
2026-06-21T23:42:58.0007103Z             {
2026-06-21T23:42:58.0007211Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T23:42:58.0007306Z               "line": 176
2026-06-21T23:42:58.0007378Z             },
2026-06-21T23:42:58.0007467Z             {
2026-06-21T23:42:58.0007585Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T23:42:58.0007667Z               "line": 22
2026-06-21T23:42:58.0007748Z             },
2026-06-21T23:42:58.0007834Z             {
2026-06-21T23:42:58.0007938Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T23:42:58.0008025Z               "line": 65
2026-06-21T23:42:58.0008101Z             },
2026-06-21T23:42:58.0008186Z             {
2026-06-21T23:42:58.0008297Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T23:42:58.0008392Z               "line": 76
2026-06-21T23:42:58.0008472Z             },
2026-06-21T23:42:58.0008553Z             {
2026-06-21T23:42:58.0008668Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T23:42:58.0008754Z               "line": 151
2026-06-21T23:42:58.0008844Z             },
2026-06-21T23:42:58.0008926Z             {
2026-06-21T23:42:58.0009121Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T23:42:58.0009207Z               "line": 210
2026-06-21T23:42:58.0009288Z             },
2026-06-21T23:42:58.0009388Z             {
2026-06-21T23:42:58.0009502Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T23:42:58.0009585Z               "line": 259
2026-06-21T23:42:58.0009665Z             },
2026-06-21T23:42:58.0009750Z             {
2026-06-21T23:42:58.0009861Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T23:42:58.0009942Z               "line": 281
2026-06-21T23:42:58.0010026Z             },
2026-06-21T23:42:58.0010102Z             {
2026-06-21T23:42:58.0010217Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T23:42:58.0010297Z               "line": 294
2026-06-21T23:42:58.0010381Z             },
2026-06-21T23:42:58.0010462Z             {
2026-06-21T23:42:58.0010577Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:42:58.0010658Z               "line": 217
2026-06-21T23:42:58.0010743Z             },
2026-06-21T23:42:58.0010824Z             {
2026-06-21T23:42:58.0010935Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:42:58.0011015Z               "line": 233
2026-06-21T23:42:58.0011100Z             },
2026-06-21T23:42:58.0011178Z             {
2026-06-21T23:42:58.0011292Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T23:42:58.0011373Z               "line": 41
2026-06-21T23:42:58.0011449Z             },
2026-06-21T23:42:58.0011526Z             {
2026-06-21T23:42:58.0011650Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T23:42:58.0011735Z               "line": 222
2026-06-21T23:42:58.0011822Z             },
2026-06-21T23:42:58.0011903Z             {
2026-06-21T23:42:58.0012012Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-21T23:42:58.0012098Z               "line": 173
2026-06-21T23:42:58.0012283Z             },
2026-06-21T23:42:58.0012364Z             {
2026-06-21T23:42:58.0012471Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T23:42:58.0012561Z               "line": 354
2026-06-21T23:42:58.0012654Z             },
2026-06-21T23:42:58.0012735Z             {
2026-06-21T23:42:58.0012840Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T23:42:58.0012929Z               "line": 419
2026-06-21T23:42:58.0013009Z             },
2026-06-21T23:42:58.0013086Z             {
2026-06-21T23:42:58.0013202Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:42:58.0013286Z               "line": 333
2026-06-21T23:42:58.0013459Z             },
2026-06-21T23:42:58.0013545Z             {
2026-06-21T23:42:58.0013639Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0013735Z               "line": 6320
2026-06-21T23:42:58.0013820Z             },
2026-06-21T23:42:58.0013902Z             {
2026-06-21T23:42:58.0014001Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0014093Z               "line": 6470
2026-06-21T23:42:58.0014178Z             },
2026-06-21T23:42:58.0014258Z             {
2026-06-21T23:42:58.0014360Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0014450Z               "line": 6646
2026-06-21T23:42:58.0014531Z             }
2026-06-21T23:42:58.0014607Z           ]
2026-06-21T23:42:58.0014684Z         },
2026-06-21T23:42:58.0014765Z         "int": {
2026-06-21T23:42:58.0014845Z           "complete": true,
2026-06-21T23:42:58.0014941Z           "evidence": [
2026-06-21T23:42:58.0015023Z             {
2026-06-21T23:42:58.0015145Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T23:42:58.0015236Z               "line": 713
2026-06-21T23:42:58.0015314Z             },
2026-06-21T23:42:58.0015395Z             {
2026-06-21T23:42:58.0015522Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-21T23:42:58.0015602Z               "line": 8
2026-06-21T23:42:58.0015699Z             },
2026-06-21T23:42:58.0015780Z             {
2026-06-21T23:42:58.0015902Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-21T23:42:58.0015989Z               "line": 49
2026-06-21T23:42:58.0016080Z             },
2026-06-21T23:42:58.0016155Z             {
2026-06-21T23:42:58.0016275Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T23:42:58.0016366Z               "line": 778
2026-06-21T23:42:58.0016442Z             },
2026-06-21T23:42:58.0016532Z             {
2026-06-21T23:42:58.0016643Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T23:42:58.0016737Z               "line": 1213
2026-06-21T23:42:58.0016823Z             },
2026-06-21T23:42:58.0016910Z             {
2026-06-21T23:42:58.0017033Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-21T23:42:58.0017114Z               "line": 17
2026-06-21T23:42:58.0017195Z             },
2026-06-21T23:42:58.0017273Z             {
2026-06-21T23:42:58.0017390Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-21T23:42:58.0017467Z               "line": 14
2026-06-21T23:42:58.0017554Z             }
2026-06-21T23:42:58.0017639Z           ]
2026-06-21T23:42:58.0017719Z         },
2026-06-21T23:42:58.0017799Z         "unit": {
2026-06-21T23:42:58.0017885Z           "complete": true,
2026-06-21T23:42:58.0017971Z           "evidence": [
2026-06-21T23:42:58.0018050Z             {
2026-06-21T23:42:58.0018174Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T23:42:58.0018260Z               "line": 246
2026-06-21T23:42:58.0018342Z             },
2026-06-21T23:42:58.0018422Z             {
2026-06-21T23:42:58.0018532Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T23:42:58.0018618Z               "line": 279
2026-06-21T23:42:58.0018699Z             },
2026-06-21T23:42:58.0018788Z             {
2026-06-21T23:42:58.0018899Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T23:42:58.0019056Z               "line": 319
2026-06-21T23:42:58.0019252Z             },
2026-06-21T23:42:58.0019337Z             {
2026-06-21T23:42:58.0019471Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T23:42:58.0019567Z               "line": 599
2026-06-21T23:42:58.0019648Z             },
2026-06-21T23:42:58.0019728Z             {
2026-06-21T23:42:58.0019835Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T23:42:58.0019919Z               "line": 672
2026-06-21T23:42:58.0020001Z             },
2026-06-21T23:42:58.0020092Z             {
2026-06-21T23:42:58.0020211Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T23:42:58.0020402Z               "line": 816
2026-06-21T23:42:58.0020488Z             },
2026-06-21T23:42:58.0020568Z             {
2026-06-21T23:42:58.0020676Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:42:58.0020762Z               "line": 595
2026-06-21T23:42:58.0020847Z             },
2026-06-21T23:42:58.0020937Z             {
2026-06-21T23:42:58.0021060Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-21T23:42:58.0021137Z               "line": 399
2026-06-21T23:42:58.0021218Z             },
2026-06-21T23:42:58.0021299Z             {
2026-06-21T23:42:58.0021389Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0021481Z               "line": 8976
2026-06-21T23:42:58.0021566Z             },
2026-06-21T23:42:58.0021641Z             {
2026-06-21T23:42:58.0021734Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0021819Z               "line": 9300
2026-06-21T23:42:58.0021900Z             },
2026-06-21T23:42:58.0021985Z             {
2026-06-21T23:42:58.0022091Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0022172Z               "line": 9717
2026-06-21T23:42:58.0022243Z             }
2026-06-21T23:42:58.0022324Z           ]
2026-06-21T23:42:58.0022401Z         }
2026-06-21T23:42:58.0022486Z       }
2026-06-21T23:42:58.0022562Z     },
2026-06-21T23:42:58.0022649Z     {
2026-06-21T23:42:58.0022735Z       "id": "REQ-SHELL-2",
2026-06-21T23:42:58.0024242Z       "title": "Shell sleep/wake: link-break always closes the binary (pre-close instruction + termination timeout), ephemeral teardown vs persistent offline/relink, wake_command wake-watcher (offline-only, exit-opcode supervision, exponential backoff + give-up), state-keyed wake resolution (dormant/suspended/active-elsewhere; no-reachable refuses — spawn-anywhere branch deferred), spt shutdown owner cascade + api owner-shutdown gated by can_shutdown (CONTEXT Shell sleep/wake)",
2026-06-21T23:42:58.0024343Z       "requiredStages": [
2026-06-21T23:42:58.0024414Z         "impl",
2026-06-21T23:42:58.0024508Z         "unit",
2026-06-21T23:42:58.0024591Z         "int"
2026-06-21T23:42:58.0024663Z       ],
2026-06-21T23:42:58.0024752Z       "stages": {
2026-06-21T23:42:58.0024833Z         "doc": {
2026-06-21T23:42:58.0024925Z           "complete": false,
2026-06-21T23:42:58.0025006Z           "evidence": []
2026-06-21T23:42:58.0025091Z         },
2026-06-21T23:42:58.0025182Z         "impl": {
2026-06-21T23:42:58.0025273Z           "complete": true,
2026-06-21T23:42:58.0025358Z           "evidence": [
2026-06-21T23:42:58.0025430Z             {
2026-06-21T23:42:58.0025555Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:42:58.0025640Z               "line": 217
2026-06-21T23:42:58.0025729Z             },
2026-06-21T23:42:58.0025811Z             {
2026-06-21T23:42:58.0025927Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T23:42:58.0026021Z               "line": 403
2026-06-21T23:42:58.0026096Z             },
2026-06-21T23:42:58.0026187Z             {
2026-06-21T23:42:58.0026297Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-21T23:42:58.0026391Z               "line": 250
2026-06-21T23:42:58.0026477Z             },
2026-06-21T23:42:58.0026559Z             {
2026-06-21T23:42:58.0026674Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T23:42:58.0026865Z               "line": 403
2026-06-21T23:42:58.0026950Z             },
2026-06-21T23:42:58.0027026Z             {
2026-06-21T23:42:58.0027136Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T23:42:58.0027227Z               "line": 30
2026-06-21T23:42:58.0027307Z             },
2026-06-21T23:42:58.0027392Z             {
2026-06-21T23:42:58.0027503Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T23:42:58.0027584Z               "line": 409
2026-06-21T23:42:58.0027665Z             },
2026-06-21T23:42:58.0027746Z             {
2026-06-21T23:42:58.0027862Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T23:42:58.0028012Z               "line": 445
2026-06-21T23:42:58.0028094Z             },
2026-06-21T23:42:58.0028167Z             {
2026-06-21T23:42:58.0028289Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T23:42:58.0028374Z               "line": 660
2026-06-21T23:42:58.0028455Z             },
2026-06-21T23:42:58.0028536Z             {
2026-06-21T23:42:58.0028644Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T23:42:58.0028729Z               "line": 348
2026-06-21T23:42:58.0028811Z             },
2026-06-21T23:42:58.0028892Z             {
2026-06-21T23:42:58.0029102Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T23:42:58.0029183Z               "line": 115
2026-06-21T23:42:58.0029282Z             },
2026-06-21T23:42:58.0029353Z             {
2026-06-21T23:42:58.0029483Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T23:42:58.0029578Z               "line": 120
2026-06-21T23:42:58.0029664Z             },
2026-06-21T23:42:58.0029751Z             {
2026-06-21T23:42:58.0029860Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T23:42:58.0029945Z               "line": 374
2026-06-21T23:42:58.0030017Z             },
2026-06-21T23:42:58.0030094Z             {
2026-06-21T23:42:58.0030198Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T23:42:58.0030303Z               "line": 500
2026-06-21T23:42:58.0030381Z             },
2026-06-21T23:42:58.0030460Z             {
2026-06-21T23:42:58.0030579Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T23:42:58.0030666Z               "line": 24
2026-06-21T23:42:58.0030747Z             },
2026-06-21T23:42:58.0030832Z             {
2026-06-21T23:42:58.0030952Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T23:42:58.0031044Z               "line": 76
2026-06-21T23:42:58.0031118Z             },
2026-06-21T23:42:58.0031204Z             {
2026-06-21T23:42:58.0031312Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T23:42:58.0031407Z               "line": 154
2026-06-21T23:42:58.0031492Z             },
2026-06-21T23:42:58.0031577Z             {
2026-06-21T23:42:58.0031692Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T23:42:58.0031778Z               "line": 177
2026-06-21T23:42:58.0031854Z             },
2026-06-21T23:42:58.0031930Z             {
2026-06-21T23:42:58.0032046Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T23:42:58.0032135Z               "line": 273
2026-06-21T23:42:58.0032206Z             },
2026-06-21T23:42:58.0032289Z             {
2026-06-21T23:42:58.0032398Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T23:42:58.0032488Z               "line": 456
2026-06-21T23:42:58.0032570Z             },
2026-06-21T23:42:58.0032646Z             {
2026-06-21T23:42:58.0032770Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T23:42:58.0032850Z               "line": 538
2026-06-21T23:42:58.0032933Z             },
2026-06-21T23:42:58.0033018Z             {
2026-06-21T23:42:58.0033142Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-21T23:42:58.0033228Z               "line": 27
2026-06-21T23:42:58.0033309Z             },
2026-06-21T23:42:58.0033394Z             {
2026-06-21T23:42:58.0033504Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-21T23:42:58.0033709Z               "line": 48
2026-06-21T23:42:58.0033789Z             },
2026-06-21T23:42:58.0033875Z             {
2026-06-21T23:42:58.0033988Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:42:58.0034082Z               "line": 517
2026-06-21T23:42:58.0034168Z             },
2026-06-21T23:42:58.0034249Z             {
2026-06-21T23:42:58.0034350Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0034439Z               "line": 1921
2026-06-21T23:42:58.0034516Z             },
2026-06-21T23:42:58.0034598Z             {
2026-06-21T23:42:58.0034707Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0034894Z               "line": 6334
2026-06-21T23:42:58.0034974Z             },
2026-06-21T23:42:58.0035060Z             {
2026-06-21T23:42:58.0035161Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0035241Z               "line": 6395
2026-06-21T23:42:58.0035322Z             },
2026-06-21T23:42:58.0035417Z             {
2026-06-21T23:42:58.0035514Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0035594Z               "line": 6423
2026-06-21T23:42:58.0035675Z             },
2026-06-21T23:42:58.0035751Z             {
2026-06-21T23:42:58.0035852Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0035937Z               "line": 6477
2026-06-21T23:42:58.0036023Z             },
2026-06-21T23:42:58.0036110Z             {
2026-06-21T23:42:58.0036210Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0036304Z               "line": 6732
2026-06-21T23:42:58.0036386Z             },
2026-06-21T23:42:58.0036472Z             {
2026-06-21T23:42:58.0036576Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0036666Z               "line": 6792
2026-06-21T23:42:58.0036751Z             },
2026-06-21T23:42:58.0036824Z             {
2026-06-21T23:42:58.0036938Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T23:42:58.0037018Z               "line": 298
2026-06-21T23:42:58.0037104Z             },
2026-06-21T23:42:58.0037190Z             {
2026-06-21T23:42:58.0037294Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T23:42:58.0037386Z               "line": 339
2026-06-21T23:42:58.0037468Z             }
2026-06-21T23:42:58.0037554Z           ]
2026-06-21T23:42:58.0037628Z         },
2026-06-21T23:42:58.0037705Z         "int": {
2026-06-21T23:42:58.0037806Z           "complete": true,
2026-06-21T23:42:58.0037882Z           "evidence": [
2026-06-21T23:42:58.0037967Z             {
2026-06-21T23:42:58.0038088Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T23:42:58.0038177Z               "line": 706
2026-06-21T23:42:58.0038263Z             },
2026-06-21T23:42:58.0038350Z             {
2026-06-21T23:42:58.0038469Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T23:42:58.0038549Z               "line": 778
2026-06-21T23:42:58.0038631Z             },
2026-06-21T23:42:58.0038713Z             {
2026-06-21T23:42:58.0038839Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T23:42:58.0038925Z               "line": 1213
2026-06-21T23:42:58.0039096Z             },
2026-06-21T23:42:58.0039180Z             {
2026-06-21T23:42:58.0039318Z               "path": "crates/spt/tests/shell_sleepwake_e2e.rs",
2026-06-21T23:42:58.0039405Z               "line": 18
2026-06-21T23:42:58.0039481Z             }
2026-06-21T23:42:58.0039561Z           ]
2026-06-21T23:42:58.0039643Z         },
2026-06-21T23:42:58.0039724Z         "unit": {
2026-06-21T23:42:58.0039809Z           "complete": true,
2026-06-21T23:42:58.0039890Z           "evidence": [
2026-06-21T23:42:58.0039972Z             {
2026-06-21T23:42:58.0040091Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T23:42:58.0040171Z               "line": 744
2026-06-21T23:42:58.0040253Z             },
2026-06-21T23:42:58.0040340Z             {
2026-06-21T23:42:58.0040453Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-21T23:42:58.0040650Z               "line": 796
2026-06-21T23:42:58.0040734Z             },
2026-06-21T23:42:58.0040815Z             {
2026-06-21T23:42:58.0040936Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T23:42:58.0041021Z               "line": 705
2026-06-21T23:42:58.0041102Z             },
2026-06-21T23:42:58.0041183Z             {
2026-06-21T23:42:58.0041289Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T23:42:58.0041377Z               "line": 754
2026-06-21T23:42:58.0041454Z             },
2026-06-21T23:42:58.0041542Z             {
2026-06-21T23:42:58.0041651Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T23:42:58.0041834Z               "line": 778
2026-06-21T23:42:58.0041921Z             },
2026-06-21T23:42:58.0042000Z             {
2026-06-21T23:42:58.0042123Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T23:42:58.0042209Z               "line": 603
2026-06-21T23:42:58.0042291Z             },
2026-06-21T23:42:58.0042371Z             {
2026-06-21T23:42:58.0042490Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T23:42:58.0042577Z               "line": 624
2026-06-21T23:42:58.0042663Z             },
2026-06-21T23:42:58.0042748Z             {
2026-06-21T23:42:58.0042854Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T23:42:58.0042939Z               "line": 660
2026-06-21T23:42:58.0043024Z             },
2026-06-21T23:42:58.0043096Z             {
2026-06-21T23:42:58.0043216Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T23:42:58.0043301Z               "line": 714
2026-06-21T23:42:58.0043387Z             },
2026-06-21T23:42:58.0043473Z             {
2026-06-21T23:42:58.0043592Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T23:42:58.0043682Z               "line": 732
2026-06-21T23:42:58.0043769Z             },
2026-06-21T23:42:58.0043855Z             {
2026-06-21T23:42:58.0043959Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T23:42:58.0044059Z               "line": 766
2026-06-21T23:42:58.0044142Z             },
2026-06-21T23:42:58.0044231Z             {
2026-06-21T23:42:58.0044349Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-21T23:42:58.0044435Z               "line": 841
2026-06-21T23:42:58.0044520Z             },
2026-06-21T23:42:58.0044600Z             {
2026-06-21T23:42:58.0044723Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-21T23:42:58.0044805Z               "line": 85
2026-06-21T23:42:58.0044887Z             },
2026-06-21T23:42:58.0044967Z             {
2026-06-21T23:42:58.0045067Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0045168Z               "line": 8044
2026-06-21T23:42:58.0045248Z             },
2026-06-21T23:42:58.0045333Z             {
2026-06-21T23:42:58.0045430Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0045511Z               "line": 9054
2026-06-21T23:42:58.0045596Z             },
2026-06-21T23:42:58.0045682Z             {
2026-06-21T23:42:58.0045787Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0045868Z               "line": 9124
2026-06-21T23:42:58.0045949Z             },
2026-06-21T23:42:58.0046030Z             {
2026-06-21T23:42:58.0046135Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0046221Z               "line": 9162
2026-06-21T23:42:58.0046302Z             }
2026-06-21T23:42:58.0046384Z           ]
2026-06-21T23:42:58.0046469Z         }
2026-06-21T23:42:58.0046555Z       }
2026-06-21T23:42:58.0046636Z     },
2026-06-21T23:42:58.0046713Z     {
2026-06-21T23:42:58.0046807Z       "id": "REQ-SHELL-3",
2026-06-21T23:42:58.0048653Z       "title": "Drive channel (owner->shell, REST-only, never-spooled, latest-wins): the owner->shell mirror of sensory for continuous real-time control (scroll/crank/stick/avatar) — a [shell.drive] manifest vocab + EVENT_TYPE_DRIVE frame, delivered to the ONLINE binary only via a single live slot (a new frame supersedes an undelivered one — no spool, no queue, no replay on relink), dropped-with-diagnostic if the shell is offline; cross-node rides the ephemeral link (REST class), never the durable shell spool. Commands = discrete+durable; drive = continuous+ephemeral (CONTEXT:260, minted 2026-06-11 Gateway grill).",
2026-06-21T23:42:58.0048837Z       "requiredStages": [
2026-06-21T23:42:58.0048925Z         "impl",
2026-06-21T23:42:58.0049119Z         "unit",
2026-06-21T23:42:58.0049200Z         "int"
2026-06-21T23:42:58.0049282Z       ],
2026-06-21T23:42:58.0049367Z       "stages": {
2026-06-21T23:42:58.0049442Z         "doc": {
2026-06-21T23:42:58.0049542Z           "complete": false,
2026-06-21T23:42:58.0049735Z           "evidence": []
2026-06-21T23:42:58.0049816Z         },
2026-06-21T23:42:58.0049912Z         "impl": {
2026-06-21T23:42:58.0049999Z           "complete": true,
2026-06-21T23:42:58.0050088Z           "evidence": [
2026-06-21T23:42:58.0050169Z             {
2026-06-21T23:42:58.0050289Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:42:58.0050393Z               "line": 229
2026-06-21T23:42:58.0050474Z             },
2026-06-21T23:42:58.0050556Z             {
2026-06-21T23:42:58.0050675Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T23:42:58.0050765Z               "line": 36
2026-06-21T23:42:58.0050833Z             },
2026-06-21T23:42:58.0050923Z             {
2026-06-21T23:42:58.0051042Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T23:42:58.0051127Z               "line": 137
2026-06-21T23:42:58.0051210Z             },
2026-06-21T23:42:58.0051289Z             {
2026-06-21T23:42:58.0051409Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T23:42:58.0051496Z               "line": 153
2026-06-21T23:42:58.0051586Z             },
2026-06-21T23:42:58.0051667Z             {
2026-06-21T23:42:58.0051777Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T23:42:58.0051863Z               "line": 165
2026-06-21T23:42:58.0051947Z             },
2026-06-21T23:42:58.0052038Z             {
2026-06-21T23:42:58.0052145Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T23:42:58.0052234Z               "line": 242
2026-06-21T23:42:58.0052319Z             },
2026-06-21T23:42:58.0052399Z             {
2026-06-21T23:42:58.0052510Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T23:42:58.0052593Z               "line": 267
2026-06-21T23:42:58.0052674Z             },
2026-06-21T23:42:58.0052755Z             {
2026-06-21T23:42:58.0052870Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T23:42:58.0052964Z               "line": 293
2026-06-21T23:42:58.0053045Z             },
2026-06-21T23:42:58.0053128Z             {
2026-06-21T23:42:58.0053242Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-21T23:42:58.0053327Z               "line": 51
2026-06-21T23:42:58.0053414Z             },
2026-06-21T23:42:58.0053489Z             {
2026-06-21T23:42:58.0053608Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T23:42:58.0053690Z               "line": 333
2026-06-21T23:42:58.0053772Z             },
2026-06-21T23:42:58.0053852Z             {
2026-06-21T23:42:58.0053971Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T23:42:58.0054063Z               "line": 373
2026-06-21T23:42:58.0054147Z             },
2026-06-21T23:42:58.0054228Z             {
2026-06-21T23:42:58.0054339Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T23:42:58.0054420Z               "line": 602
2026-06-21T23:42:58.0054500Z             },
2026-06-21T23:42:58.0054586Z             {
2026-06-21T23:42:58.0054716Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T23:42:58.0054796Z               "line": 132
2026-06-21T23:42:58.0054881Z             },
2026-06-21T23:42:58.0054961Z             {
2026-06-21T23:42:58.0055085Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T23:42:58.0055169Z               "line": 448
2026-06-21T23:42:58.0055375Z             },
2026-06-21T23:42:58.0055461Z             {
2026-06-21T23:42:58.0055564Z               "path": "crates/spt-proto/src/event.rs",
2026-06-21T23:42:58.0055656Z               "line": 74
2026-06-21T23:42:58.0055737Z             },
2026-06-21T23:42:58.0055822Z             {
2026-06-21T23:42:58.0055937Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:42:58.0056023Z               "line": 605
2026-06-21T23:42:58.0056104Z             },
2026-06-21T23:42:58.0056185Z             {
2026-06-21T23:42:58.0056305Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:42:58.0056457Z               "line": 396
2026-06-21T23:42:58.0056542Z             },
2026-06-21T23:42:58.0056625Z             {
2026-06-21T23:42:58.0056733Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0056824Z               "line": 6518
2026-06-21T23:42:58.0056901Z             }
2026-06-21T23:42:58.0056987Z           ]
2026-06-21T23:42:58.0057076Z         },
2026-06-21T23:42:58.0057148Z         "int": {
2026-06-21T23:42:58.0057235Z           "complete": true,
2026-06-21T23:42:58.0057325Z           "evidence": [
2026-06-21T23:42:58.0057410Z             {
2026-06-21T23:42:58.0057521Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T23:42:58.0057602Z               "line": 1262
2026-06-21T23:42:58.0057682Z             },
2026-06-21T23:42:58.0057767Z             {
2026-06-21T23:42:58.0057876Z               "path": "crates/spt/tests/drive_e2e.rs",
2026-06-21T23:42:58.0057968Z               "line": 17
2026-06-21T23:42:58.0058063Z             }
2026-06-21T23:42:58.0058133Z           ]
2026-06-21T23:42:58.0058230Z         },
2026-06-21T23:42:58.0058316Z         "unit": {
2026-06-21T23:42:58.0058411Z           "complete": true,
2026-06-21T23:42:58.0058496Z           "evidence": [
2026-06-21T23:42:58.0058583Z             {
2026-06-21T23:42:58.0058697Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T23:42:58.0058787Z               "line": 311
2026-06-21T23:42:58.0058869Z             },
2026-06-21T23:42:58.0059035Z             {
2026-06-21T23:42:58.0059165Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T23:42:58.0059260Z               "line": 325
2026-06-21T23:42:58.0059346Z             },
2026-06-21T23:42:58.0059426Z             {
2026-06-21T23:42:58.0059532Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T23:42:58.0059626Z               "line": 343
2026-06-21T23:42:58.0059708Z             },
2026-06-21T23:42:58.0059789Z             {
2026-06-21T23:42:58.0059909Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T23:42:58.0059997Z               "line": 364
2026-06-21T23:42:58.0060087Z             },
2026-06-21T23:42:58.0060159Z             {
2026-06-21T23:42:58.0060277Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-21T23:42:58.0060362Z               "line": 376
2026-06-21T23:42:58.0060458Z             },
2026-06-21T23:42:58.0060544Z             {
2026-06-21T23:42:58.0060657Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T23:42:58.0060748Z               "line": 897
2026-06-21T23:42:58.0060826Z             },
2026-06-21T23:42:58.0060916Z             {
2026-06-21T23:42:58.0061029Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T23:42:58.0061121Z               "line": 957
2026-06-21T23:42:58.0061211Z             },
2026-06-21T23:42:58.0061287Z             {
2026-06-21T23:42:58.0061407Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-21T23:42:58.0061493Z               "line": 338
2026-06-21T23:42:58.0061574Z             },
2026-06-21T23:42:58.0061664Z             {
2026-06-21T23:42:58.0061770Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T23:42:58.0061864Z               "line": 769
2026-06-21T23:42:58.0061945Z             },
2026-06-21T23:42:58.0062032Z             {
2026-06-21T23:42:58.0062137Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0062342Z               "line": 8836
2026-06-21T23:42:58.0062423Z             }
2026-06-21T23:42:58.0062508Z           ]
2026-06-21T23:42:58.0065565Z         }
2026-06-21T23:42:58.0065655Z       }
2026-06-21T23:42:58.0065739Z     },
2026-06-21T23:42:58.0065824Z     {
2026-06-21T23:42:58.0065925Z       "id": "REQ-SHELL-4",
2026-06-21T23:42:58.0067899Z       "title": "Shell tunnel (reliable-ordered opaque byte stream): an owner<->shell link may hold a long-lived, reliable-ordered, link-bound QUIC stream pair carrying opaque wire protocol traffic the channel taxonomy must NOT reinterpret (first consumer usbip URB) — manifest opt-in, not enveloped, not MAC-framed, not spooled; the link lifecycle governs it (a link-break closes the tunnel). Reliable-ordered ⇒ congestion surfaces as lag never loss ⇒ acceptable only on-LAN: the on-LAN posture is documented and the tunnel is NOT proven cross-WAN (CONTEXT:262, minted 2026-06-11 Gateway grill; doyle gate C2).",
2026-06-21T23:42:58.0068129Z       "requiredStages": [
2026-06-21T23:42:58.0068228Z         "doc",
2026-06-21T23:42:58.0068313Z         "impl",
2026-06-21T23:42:58.0068398Z         "unit",
2026-06-21T23:42:58.0068480Z         "int"
2026-06-21T23:42:58.0068557Z       ],
2026-06-21T23:42:58.0068642Z       "stages": {
2026-06-21T23:42:58.0068723Z         "doc": {
2026-06-21T23:42:58.0068809Z           "complete": true,
2026-06-21T23:42:58.0068895Z           "evidence": [
2026-06-21T23:42:58.0069062Z             {
2026-06-21T23:42:58.0069157Z               "path": "CONTEXT.md",
2026-06-21T23:42:58.0069248Z               "line": 281
2026-06-21T23:42:58.0069357Z             },
2026-06-21T23:42:58.0069439Z             {
2026-06-21T23:42:58.0069681Z               "path": "docs/adr/0020-event-envelope-sole-arriving-format-reply-to-removed.md",
2026-06-21T23:42:58.0069763Z               "line": 88
2026-06-21T23:42:58.0069848Z             }
2026-06-21T23:42:58.0069934Z           ]
2026-06-21T23:42:58.0070011Z         },
2026-06-21T23:42:58.0070097Z         "impl": {
2026-06-21T23:42:58.0070191Z           "complete": true,
2026-06-21T23:42:58.0070273Z           "evidence": [
2026-06-21T23:42:58.0070340Z             {
2026-06-21T23:42:58.0070459Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:42:58.0070544Z               "line": 243
2026-06-21T23:42:58.0070620Z             },
2026-06-21T23:42:58.0070706Z             {
2026-06-21T23:42:58.0070823Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-21T23:42:58.0070913Z               "line": 61
2026-06-21T23:42:58.0070994Z             },
2026-06-21T23:42:58.0071076Z             {
2026-06-21T23:42:58.0071194Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T23:42:58.0071275Z               "line": 218
2026-06-21T23:42:58.0071357Z             },
2026-06-21T23:42:58.0071442Z             {
2026-06-21T23:42:58.0071556Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T23:42:58.0071643Z               "line": 245
2026-06-21T23:42:58.0071724Z             },
2026-06-21T23:42:58.0071814Z             {
2026-06-21T23:42:58.0071919Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T23:42:58.0072005Z               "line": 616
2026-06-21T23:42:58.0072086Z             },
2026-06-21T23:42:58.0072172Z             {
2026-06-21T23:42:58.0072282Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T23:42:58.0072368Z               "line": 1191
2026-06-21T23:42:58.0072449Z             },
2026-06-21T23:42:58.0072534Z             {
2026-06-21T23:42:58.0072640Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T23:42:58.0072725Z               "line": 1203
2026-06-21T23:42:58.0072811Z             },
2026-06-21T23:42:58.0072897Z             {
2026-06-21T23:42:58.0073007Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T23:42:58.0073091Z               "line": 1244
2026-06-21T23:42:58.0073178Z             },
2026-06-21T23:42:58.0073260Z             {
2026-06-21T23:42:58.0073383Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T23:42:58.0073578Z               "line": 456
2026-06-21T23:42:58.0073662Z             },
2026-06-21T23:42:58.0073737Z             {
2026-06-21T23:42:58.0073856Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T23:42:58.0073948Z               "line": 44
2026-06-21T23:42:58.0074038Z             },
2026-06-21T23:42:58.0074123Z             {
2026-06-21T23:42:58.0074234Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T23:42:58.0074314Z               "line": 208
2026-06-21T23:42:58.0074395Z             },
2026-06-21T23:42:58.0074481Z             {
2026-06-21T23:42:58.0074592Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T23:42:58.0074781Z               "line": 227
2026-06-21T23:42:58.0074858Z             },
2026-06-21T23:42:58.0074944Z             {
2026-06-21T23:42:58.0075062Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T23:42:58.0075144Z               "line": 253
2026-06-21T23:42:58.0075230Z             },
2026-06-21T23:42:58.0075310Z             {
2026-06-21T23:42:58.0075425Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T23:42:58.0075512Z               "line": 272
2026-06-21T23:42:58.0075597Z             },
2026-06-21T23:42:58.0075678Z             {
2026-06-21T23:42:58.0075794Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T23:42:58.0075884Z               "line": 392
2026-06-21T23:42:58.0075963Z             },
2026-06-21T23:42:58.0076049Z             {
2026-06-21T23:42:58.0076163Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T23:42:58.0076252Z               "line": 421
2026-06-21T23:42:58.0076346Z             },
2026-06-21T23:42:58.0076423Z             {
2026-06-21T23:42:58.0076543Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T23:42:58.0076628Z               "line": 439
2026-06-21T23:42:58.0076709Z             },
2026-06-21T23:42:58.0076786Z             {
2026-06-21T23:42:58.0076901Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T23:42:58.0076995Z               "line": 458
2026-06-21T23:42:58.0077072Z             },
2026-06-21T23:42:58.0077158Z             {
2026-06-21T23:42:58.0077276Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T23:42:58.0077362Z               "line": 486
2026-06-21T23:42:58.0077444Z             },
2026-06-21T23:42:58.0077524Z             {
2026-06-21T23:42:58.0077644Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:42:58.0077725Z               "line": 624
2026-06-21T23:42:58.0077802Z             },
2026-06-21T23:42:58.0077878Z             {
2026-06-21T23:42:58.0078006Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:42:58.0078084Z               "line": 829
2026-06-21T23:42:58.0078163Z             },
2026-06-21T23:42:58.0078249Z             {
2026-06-21T23:42:58.0078360Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:42:58.0078450Z               "line": 435
2026-06-21T23:42:58.0078530Z             },
2026-06-21T23:42:58.0078617Z             {
2026-06-21T23:42:58.0078723Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0078807Z               "line": 6574
2026-06-21T23:42:58.0078892Z             }
2026-06-21T23:42:58.0079050Z           ]
2026-06-21T23:42:58.0079131Z         },
2026-06-21T23:42:58.0079206Z         "int": {
2026-06-21T23:42:58.0079297Z           "complete": true,
2026-06-21T23:42:58.0079388Z           "evidence": [
2026-06-21T23:42:58.0079465Z             {
2026-06-21T23:42:58.0079583Z               "path": "crates/spt/tests/tunnel_e2e.rs",
2026-06-21T23:42:58.0079666Z               "line": 18
2026-06-21T23:42:58.0079741Z             }
2026-06-21T23:42:58.0079826Z           ]
2026-06-21T23:42:58.0079907Z         },
2026-06-21T23:42:58.0079995Z         "unit": {
2026-06-21T23:42:58.0080080Z           "complete": true,
2026-06-21T23:42:58.0080160Z           "evidence": [
2026-06-21T23:42:58.0080241Z             {
2026-06-21T23:42:58.0080461Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T23:42:58.0080546Z               "line": 1479
2026-06-21T23:42:58.0080629Z             },
2026-06-21T23:42:58.0080709Z             {
2026-06-21T23:42:58.0080813Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T23:42:58.0080895Z               "line": 1508
2026-06-21T23:42:58.0080981Z             },
2026-06-21T23:42:58.0081061Z             {
2026-06-21T23:42:58.0081175Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T23:42:58.0081266Z               "line": 504
2026-06-21T23:42:58.0081350Z             },
2026-06-21T23:42:58.0081430Z             {
2026-06-21T23:42:58.0081660Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T23:42:58.0081740Z               "line": 514
2026-06-21T23:42:58.0081825Z             },
2026-06-21T23:42:58.0081907Z             {
2026-06-21T23:42:58.0082036Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T23:42:58.0082125Z               "line": 531
2026-06-21T23:42:58.0082208Z             },
2026-06-21T23:42:58.0082298Z             {
2026-06-21T23:42:58.0082407Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T23:42:58.0082503Z               "line": 543
2026-06-21T23:42:58.0082585Z             },
2026-06-21T23:42:58.0082670Z             {
2026-06-21T23:42:58.0082779Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-21T23:42:58.0082862Z               "line": 555
2026-06-21T23:42:58.0082946Z             },
2026-06-21T23:42:58.0083023Z             {
2026-06-21T23:42:58.0083142Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:42:58.0083243Z               "line": 1145
2026-06-21T23:42:58.0083323Z             },
2026-06-21T23:42:58.0083404Z             {
2026-06-21T23:42:58.0083506Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T23:42:58.0083586Z               "line": 776
2026-06-21T23:42:58.0083661Z             }
2026-06-21T23:42:58.0083748Z           ]
2026-06-21T23:42:58.0083835Z         }
2026-06-21T23:42:58.0083919Z       }
2026-06-21T23:42:58.0083999Z     },
2026-06-21T23:42:58.0084080Z     {
2026-06-21T23:42:58.0084161Z       "id": "REQ-SHELL-5",
2026-06-21T23:42:58.0085370Z       "title": "Shell ownership is owner-type-agnostic: any non-Shell endpoint type may own/spawn/drive/command/link a shell (Gateway the named first) — control-exclusivity keys on the owner endpoint_id, NEVER on the owner's endpoint type. No ownership path (mint, launch, owner-from-link, cmd, drive, tunnel, sleep/wake, owner-shutdown) inspects the owner's type (CONTEXT:264, ratified 2026-06-11 Gateway grill).",
2026-06-21T23:42:58.0085476Z       "requiredStages": [
2026-06-21T23:42:58.0085561Z         "doc",
2026-06-21T23:42:58.0085641Z         "impl",
2026-06-21T23:42:58.0085734Z         "unit",
2026-06-21T23:42:58.0085814Z         "int"
2026-06-21T23:42:58.0085894Z       ],
2026-06-21T23:42:58.0085985Z       "stages": {
2026-06-21T23:42:58.0086062Z         "doc": {
2026-06-21T23:42:58.0086167Z           "complete": true,
2026-06-21T23:42:58.0086248Z           "evidence": [
2026-06-21T23:42:58.0086334Z             {
2026-06-21T23:42:58.0086430Z               "path": "CONTEXT.md",
2026-06-21T23:42:58.0086519Z               "line": 284
2026-06-21T23:42:58.0086604Z             }
2026-06-21T23:42:58.0086680Z           ]
2026-06-21T23:42:58.0086766Z         },
2026-06-21T23:42:58.0086841Z         "impl": {
2026-06-21T23:42:58.0086930Z           "complete": true,
2026-06-21T23:42:58.0087012Z           "evidence": [
2026-06-21T23:42:58.0087098Z             {
2026-06-21T23:42:58.0087216Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-21T23:42:58.0087302Z               "line": 260
2026-06-21T23:42:58.0087385Z             }
2026-06-21T23:42:58.0087471Z           ]
2026-06-21T23:42:58.0087555Z         },
2026-06-21T23:42:58.0087637Z         "int": {
2026-06-21T23:42:58.0087728Z           "complete": true,
2026-06-21T23:42:58.0087813Z           "evidence": [
2026-06-21T23:42:58.0087980Z             {
2026-06-21T23:42:58.0088099Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T23:42:58.0088179Z               "line": 827
2026-06-21T23:42:58.0088256Z             },
2026-06-21T23:42:58.0088339Z             {
2026-06-21T23:42:58.0088452Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T23:42:58.0088543Z               "line": 1290
2026-06-21T23:42:58.0088615Z             },
2026-06-21T23:42:58.0088696Z             {
2026-06-21T23:42:58.0088838Z               "path": "crates/spt/tests/gateway_owner_shell_e2e.rs",
2026-06-21T23:42:58.0088916Z               "line": 23
2026-06-21T23:42:58.0089066Z             }
2026-06-21T23:42:58.0089249Z           ]
2026-06-21T23:42:58.0089349Z         },
2026-06-21T23:42:58.0089428Z         "unit": {
2026-06-21T23:42:58.0089523Z           "complete": true,
2026-06-21T23:42:58.0089610Z           "evidence": [
2026-06-21T23:42:58.0089682Z             {
2026-06-21T23:42:58.0089800Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-21T23:42:58.0089886Z               "line": 803
2026-06-21T23:42:58.0089972Z             }
2026-06-21T23:42:58.0090044Z           ]
2026-06-21T23:42:58.0090129Z         }
2026-06-21T23:42:58.0090211Z       }
2026-06-21T23:42:58.0090291Z     },
2026-06-21T23:42:58.0090372Z     {
2026-06-21T23:42:58.0090458Z       "id": "REQ-START-1",
2026-06-21T23:42:58.0090654Z       "title": "Adapters never resolve SPT_HOME; binary on PATH; api bridging only",
2026-06-21T23:42:58.0090749Z       "requiredStages": [
2026-06-21T23:42:58.0090836Z         "impl",
2026-06-21T23:42:58.0090917Z         "unit"
2026-06-21T23:42:58.0091002Z       ],
2026-06-21T23:42:58.0091083Z       "stages": {
2026-06-21T23:42:58.0091170Z         "doc": {
2026-06-21T23:42:58.0091260Z           "complete": false,
2026-06-21T23:42:58.0091340Z           "evidence": []
2026-06-21T23:42:58.0091421Z         },
2026-06-21T23:42:58.0091509Z         "impl": {
2026-06-21T23:42:58.0091589Z           "complete": true,
2026-06-21T23:42:58.0091688Z           "evidence": [
2026-06-21T23:42:58.0091773Z             {
2026-06-21T23:42:58.0091878Z               "path": "crates/spt-store/src/seed.rs",
2026-06-21T23:42:58.0091962Z               "line": 16
2026-06-21T23:42:58.0092042Z             }
2026-06-21T23:42:58.0092124Z           ]
2026-06-21T23:42:58.0092210Z         },
2026-06-21T23:42:58.0092286Z         "int": {
2026-06-21T23:42:58.0092371Z           "complete": false,
2026-06-21T23:42:58.0092453Z           "evidence": []
2026-06-21T23:42:58.0092535Z         },
2026-06-21T23:42:58.0092620Z         "unit": {
2026-06-21T23:42:58.0092705Z           "complete": true,
2026-06-21T23:42:58.0092797Z           "evidence": [
2026-06-21T23:42:58.0092878Z             {
2026-06-21T23:42:58.0092982Z               "path": "crates/spt-store/src/seed.rs",
2026-06-21T23:42:58.0093068Z               "line": 48
2026-06-21T23:42:58.0093154Z             },
2026-06-21T23:42:58.0093230Z             {
2026-06-21T23:42:58.0093334Z               "path": "crates/spt-store/src/seed.rs",
2026-06-21T23:42:58.0093422Z               "line": 63
2026-06-21T23:42:58.0093502Z             }
2026-06-21T23:42:58.0093592Z           ]
2026-06-21T23:42:58.0093663Z         }
2026-06-21T23:42:58.0093742Z       }
2026-06-21T23:42:58.0093826Z     },
2026-06-21T23:42:58.0093897Z     {
2026-06-21T23:42:58.0093988Z       "id": "REQ-START-2",
2026-06-21T23:42:58.0094122Z       "title": "Harness-hosted startup: api seed then listen",
2026-06-21T23:42:58.0094217Z       "requiredStages": [
2026-06-21T23:42:58.0094298Z         "impl",
2026-06-21T23:42:58.0094381Z         "unit",
2026-06-21T23:42:58.0094456Z         "int"
2026-06-21T23:42:58.0094541Z       ],
2026-06-21T23:42:58.0094630Z       "stages": {
2026-06-21T23:42:58.0094698Z         "doc": {
2026-06-21T23:42:58.0094787Z           "complete": false,
2026-06-21T23:42:58.0094872Z           "evidence": []
2026-06-21T23:42:58.0094962Z         },
2026-06-21T23:42:58.0095044Z         "impl": {
2026-06-21T23:42:58.0095125Z           "complete": true,
2026-06-21T23:42:58.0095320Z           "evidence": [
2026-06-21T23:42:58.0095387Z             {
2026-06-21T23:42:58.0095506Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:42:58.0095586Z               "line": 16
2026-06-21T23:42:58.0095664Z             },
2026-06-21T23:42:58.0095745Z             {
2026-06-21T23:42:58.0095859Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:42:58.0095949Z               "line": 115
2026-06-21T23:42:58.0096031Z             },
2026-06-21T23:42:58.0096121Z             {
2026-06-21T23:42:58.0096231Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:42:58.0096388Z               "line": 300
2026-06-21T23:42:58.0096479Z             }
2026-06-21T23:42:58.0096560Z           ]
2026-06-21T23:42:58.0096641Z         },
2026-06-21T23:42:58.0096717Z         "int": {
2026-06-21T23:42:58.0096813Z           "complete": true,
2026-06-21T23:42:58.0096904Z           "evidence": [
2026-06-21T23:42:58.0096985Z             {
2026-06-21T23:42:58.0097112Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T23:42:58.0097197Z               "line": 186
2026-06-21T23:42:58.0097283Z             }
2026-06-21T23:42:58.0097359Z           ]
2026-06-21T23:42:58.0097443Z         },
2026-06-21T23:42:58.0097533Z         "unit": {
2026-06-21T23:42:58.0097625Z           "complete": true,
2026-06-21T23:42:58.0097720Z           "evidence": [
2026-06-21T23:42:58.0097800Z             {
2026-06-21T23:42:58.0097916Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:42:58.0097996Z               "line": 590
2026-06-21T23:42:58.0098077Z             },
2026-06-21T23:42:58.0098158Z             {
2026-06-21T23:42:58.0098264Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:42:58.0098350Z               "line": 623
2026-06-21T23:42:58.0098429Z             }
2026-06-21T23:42:58.0098507Z           ]
2026-06-21T23:42:58.0098588Z         }
2026-06-21T23:42:58.0098673Z       }
2026-06-21T23:42:58.0098768Z     },
2026-06-21T23:42:58.0098846Z     {
2026-06-21T23:42:58.0099027Z       "id": "REQ-START-3",
2026-06-21T23:42:58.0099194Z       "title": "spt-hosted startup: spawn-session then api bind (no file)",
2026-06-21T23:42:58.0099307Z       "requiredStages": [
2026-06-21T23:42:58.0099388Z         "impl",
2026-06-21T23:42:58.0099476Z         "unit",
2026-06-21T23:42:58.0099552Z         "int"
2026-06-21T23:42:58.0099636Z       ],
2026-06-21T23:42:58.0099717Z       "stages": {
2026-06-21T23:42:58.0099805Z         "doc": {
2026-06-21T23:42:58.0099895Z           "complete": false,
2026-06-21T23:42:58.0099979Z           "evidence": []
2026-06-21T23:42:58.0100060Z         },
2026-06-21T23:42:58.0100155Z         "impl": {
2026-06-21T23:42:58.0100238Z           "complete": true,
2026-06-21T23:42:58.0100326Z           "evidence": [
2026-06-21T23:42:58.0100403Z             {
2026-06-21T23:42:58.0100523Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T23:42:58.0100604Z               "line": 23
2026-06-21T23:42:58.0100699Z             },
2026-06-21T23:42:58.0100776Z             {
2026-06-21T23:42:58.0100895Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T23:42:58.0100975Z               "line": 205
2026-06-21T23:42:58.0101052Z             },
2026-06-21T23:42:58.0101139Z             {
2026-06-21T23:42:58.0101243Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T23:42:58.0101328Z               "line": 221
2026-06-21T23:42:58.0101415Z             },
2026-06-21T23:42:58.0101496Z             {
2026-06-21T23:42:58.0101604Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:42:58.0101686Z               "line": 17
2026-06-21T23:42:58.0101773Z             },
2026-06-21T23:42:58.0101852Z             {
2026-06-21T23:42:58.0101957Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:42:58.0102044Z               "line": 35
2026-06-21T23:42:58.0102130Z             },
2026-06-21T23:42:58.0102215Z             {
2026-06-21T23:42:58.0102323Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:42:58.0102508Z               "line": 116
2026-06-21T23:42:58.0102589Z             }
2026-06-21T23:42:58.0102679Z           ]
2026-06-21T23:42:58.0102766Z         },
2026-06-21T23:42:58.0102846Z         "int": {
2026-06-21T23:42:58.0102936Z           "complete": true,
2026-06-21T23:42:58.0103018Z           "evidence": [
2026-06-21T23:42:58.0103104Z             {
2026-06-21T23:42:58.0103208Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-21T23:42:58.0103294Z               "line": 488
2026-06-21T23:42:58.0103381Z             }
2026-06-21T23:42:58.0103462Z           ]
2026-06-21T23:42:58.0103633Z         },
2026-06-21T23:42:58.0103719Z         "unit": {
2026-06-21T23:42:58.0103814Z           "complete": true,
2026-06-21T23:42:58.0103895Z           "evidence": [
2026-06-21T23:42:58.0103977Z             {
2026-06-21T23:42:58.0104095Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T23:42:58.0104181Z               "line": 381
2026-06-21T23:42:58.0104272Z             },
2026-06-21T23:42:58.0104358Z             {
2026-06-21T23:42:58.0104472Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T23:42:58.0104548Z               "line": 402
2026-06-21T23:42:58.0104636Z             },
2026-06-21T23:42:58.0104724Z             {
2026-06-21T23:42:58.0104830Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-21T23:42:58.0104921Z               "line": 412
2026-06-21T23:42:58.0104997Z             },
2026-06-21T23:42:58.0105087Z             {
2026-06-21T23:42:58.0105195Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:42:58.0105287Z               "line": 591
2026-06-21T23:42:58.0105380Z             },
2026-06-21T23:42:58.0105460Z             {
2026-06-21T23:42:58.0105575Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:42:58.0105662Z               "line": 624
2026-06-21T23:42:58.0105742Z             },
2026-06-21T23:42:58.0105822Z             {
2026-06-21T23:42:58.0105938Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:42:58.0106019Z               "line": 657
2026-06-21T23:42:58.0106090Z             }
2026-06-21T23:42:58.0106181Z           ]
2026-06-21T23:42:58.0106262Z         }
2026-06-21T23:42:58.0106348Z       }
2026-06-21T23:42:58.0106428Z     },
2026-06-21T23:42:58.0106505Z     {
2026-06-21T23:42:58.0106601Z       "id": "REQ-START-4",
2026-06-21T23:42:58.0106738Z       "title": "Adapter-injected env aliases (SPT/OWL/LIVE)",
2026-06-21T23:42:58.0106834Z       "requiredStages": [
2026-06-21T23:42:58.0106920Z         "impl",
2026-06-21T23:42:58.0107010Z         "unit"
2026-06-21T23:42:58.0107091Z       ],
2026-06-21T23:42:58.0107178Z       "stages": {
2026-06-21T23:42:58.0107263Z         "doc": {
2026-06-21T23:42:58.0107353Z           "complete": false,
2026-06-21T23:42:58.0107435Z           "evidence": []
2026-06-21T23:42:58.0107517Z         },
2026-06-21T23:42:58.0107606Z         "impl": {
2026-06-21T23:42:58.0107695Z           "complete": true,
2026-06-21T23:42:58.0107791Z           "evidence": [
2026-06-21T23:42:58.0107872Z             {
2026-06-21T23:42:58.0107989Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:42:58.0108084Z               "line": 585
2026-06-21T23:42:58.0108161Z             }
2026-06-21T23:42:58.0108243Z           ]
2026-06-21T23:42:58.0108327Z         },
2026-06-21T23:42:58.0108413Z         "int": {
2026-06-21T23:42:58.0108495Z           "complete": false,
2026-06-21T23:42:58.0108581Z           "evidence": []
2026-06-21T23:42:58.0108666Z         },
2026-06-21T23:42:58.0108752Z         "unit": {
2026-06-21T23:42:58.0108843Z           "complete": true,
2026-06-21T23:42:58.0108929Z           "evidence": [
2026-06-21T23:42:58.0109092Z             {
2026-06-21T23:42:58.0109214Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:42:58.0109309Z               "line": 1026
2026-06-21T23:42:58.0109401Z             }
2026-06-21T23:42:58.0109491Z           ]
2026-06-21T23:42:58.0109572Z         }
2026-06-21T23:42:58.0109773Z       }
2026-06-21T23:42:58.0109858Z     },
2026-06-21T23:42:58.0109949Z     {
2026-06-21T23:42:58.0110026Z       "id": "REQ-START-5",
2026-06-21T23:42:58.0112869Z       "title": "Adapter-agnostic harness-hosted seed + bind-time adapter/profile resolution (ADR-0021): `api seed` carries only parent_pid + session_id (+ optional cwd), no --adapter — a pure \"a harness session exists at this pid\" record; --adapter becomes an OPTIONAL override across the whole api group (an explicit name[:profile] for adapter dev, never required). Omitted, listen/poll resolve the owning adapter/profile AT BIND as a pure read against the live registry — never a seed-time snapshot that can drift: seed parent_pid → exe basename → host_binaries candidate set (REQ-MANIFEST-8) → active-profile pointer (REQ-INSTALL-12) primary, else greatest-registered_at_ms candidate base profile (name-asc tie) → friendly zero-match error. Covers BOTH LiveAgent (listen) and ReadyAgent (poll) bringup. Restores legacy parity: `$LIVE start <id>` → `$SPT listen <id>` with no mandatory --adapter, one generic SessionStart hook per harness binary. (v0.9.0)",
2026-06-21T23:42:58.0113082Z       "requiredStages": [
2026-06-21T23:42:58.0113163Z         "doc",
2026-06-21T23:42:58.0113249Z         "impl",
2026-06-21T23:42:58.0113335Z         "unit",
2026-06-21T23:42:58.0113420Z         "int"
2026-06-21T23:42:58.0113506Z       ],
2026-06-21T23:42:58.0113587Z       "stages": {
2026-06-21T23:42:58.0113673Z         "doc": {
2026-06-21T23:42:58.0113763Z           "complete": true,
2026-06-21T23:42:58.0113844Z           "evidence": [
2026-06-21T23:42:58.0113922Z             {
2026-06-21T23:42:58.0114032Z               "path": "CONTEXT.md",
2026-06-21T23:42:58.0114131Z               "line": 176
2026-06-21T23:42:58.0114213Z             },
2026-06-21T23:42:58.0114298Z             {
2026-06-21T23:42:58.0114436Z               "path": "docs-site/src/harness-contract/api.md",
2026-06-21T23:42:58.0114532Z               "line": 28
2026-06-21T23:42:58.0114613Z             }
2026-06-21T23:42:58.0114699Z           ]
2026-06-21T23:42:58.0114784Z         },
2026-06-21T23:42:58.0114866Z         "impl": {
2026-06-21T23:42:58.0114956Z           "complete": true,
2026-06-21T23:42:58.0115032Z           "evidence": [
2026-06-21T23:42:58.0115118Z             {
2026-06-21T23:42:58.0115243Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T23:42:58.0115332Z               "line": 26
2026-06-21T23:42:58.0115414Z             },
2026-06-21T23:42:58.0115501Z             {
2026-06-21T23:42:58.0115613Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T23:42:58.0115699Z               "line": 212
2026-06-21T23:42:58.0115794Z             },
2026-06-21T23:42:58.0115875Z             {
2026-06-21T23:42:58.0115987Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T23:42:58.0116082Z               "line": 221
2026-06-21T23:42:58.0116159Z             },
2026-06-21T23:42:58.0116236Z             {
2026-06-21T23:42:58.0116349Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T23:42:58.0116445Z               "line": 485
2026-06-21T23:42:58.0116527Z             },
2026-06-21T23:42:58.0116612Z             {
2026-06-21T23:42:58.0116731Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:42:58.0116818Z               "line": 36
2026-06-21T23:42:58.0116903Z             },
2026-06-21T23:42:58.0116983Z             {
2026-06-21T23:42:58.0117099Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:42:58.0117193Z               "line": 118
2026-06-21T23:42:58.0117270Z             },
2026-06-21T23:42:58.0117355Z             {
2026-06-21T23:42:58.0117461Z               "path": "crates/spt/src/api/startup.rs",
2026-06-21T23:42:58.0117560Z               "line": 329
2026-06-21T23:42:58.0117642Z             }
2026-06-21T23:42:58.0117729Z           ]
2026-06-21T23:42:58.0117819Z         },
2026-06-21T23:42:58.0117899Z         "int": {
2026-06-21T23:42:58.0117990Z           "complete": true,
2026-06-21T23:42:58.0118157Z           "evidence": [
2026-06-21T23:42:58.0118237Z             {
2026-06-21T23:42:58.0118365Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-06-21T23:42:58.0118460Z               "line": 17
2026-06-21T23:42:58.0118540Z             }
2026-06-21T23:42:58.0118625Z           ]
2026-06-21T23:42:58.0118707Z         },
2026-06-21T23:42:58.0118779Z         "unit": {
2026-06-21T23:42:58.0118864Z           "complete": true,
2026-06-21T23:42:58.0119017Z           "evidence": [
2026-06-21T23:42:58.0119098Z             {
2026-06-21T23:42:58.0119212Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T23:42:58.0119298Z               "line": 358
2026-06-21T23:42:58.0119555Z             },
2026-06-21T23:42:58.0119637Z             {
2026-06-21T23:42:58.0119760Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-21T23:42:58.0119846Z               "line": 371
2026-06-21T23:42:58.0119937Z             },
2026-06-21T23:42:58.0120023Z             {
2026-06-21T23:42:58.0120137Z               "path": "crates/spt/src/api/mod.rs",
2026-06-21T23:42:58.0120223Z               "line": 597
2026-06-21T23:42:58.0120301Z             }
2026-06-21T23:42:58.0120380Z           ]
2026-06-21T23:42:58.0120461Z         }
2026-06-21T23:42:58.0120547Z       }
2026-06-21T23:42:58.0120634Z     },
2026-06-21T23:42:58.0120714Z     {
2026-06-21T23:42:58.0120810Z       "id": "REQ-STORE-1",
2026-06-21T23:42:58.0121653Z       "title": "spt-store::BranchStore (git branch as versioned KV; commit=checkpoint/tip=resume, atomic multi-key, merge-native sync) is the substrate for coarse/durable/audited state (context, registry snapshot+distribution, daemon checkpoint); hot paths (B5 fsync journal) + indexed queries (SQLite spool) excluded (ADR-0011)",
2026-06-21T23:42:58.0121748Z       "requiredStages": [
2026-06-21T23:42:58.0121833Z         "impl",
2026-06-21T23:42:58.0121915Z         "unit"
2026-06-21T23:42:58.0121996Z       ],
2026-06-21T23:42:58.0122086Z       "stages": {
2026-06-21T23:42:58.0122177Z         "doc": {
2026-06-21T23:42:58.0122263Z           "complete": false,
2026-06-21T23:42:58.0122358Z           "evidence": []
2026-06-21T23:42:58.0122448Z         },
2026-06-21T23:42:58.0122531Z         "impl": {
2026-06-21T23:42:58.0122630Z           "complete": true,
2026-06-21T23:42:58.0122711Z           "evidence": [
2026-06-21T23:42:58.0122802Z             {
2026-06-21T23:42:58.0122931Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T23:42:58.0123020Z               "line": 23
2026-06-21T23:42:58.0123102Z             },
2026-06-21T23:42:58.0123184Z             {
2026-06-21T23:42:58.0123311Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T23:42:58.0123397Z               "line": 46
2026-06-21T23:42:58.0123478Z             },
2026-06-21T23:42:58.0123559Z             {
2026-06-21T23:42:58.0123675Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T23:42:58.0123765Z               "line": 97
2026-06-21T23:42:58.0123852Z             },
2026-06-21T23:42:58.0123939Z             {
2026-06-21T23:42:58.0124052Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T23:42:58.0124138Z               "line": 125
2026-06-21T23:42:58.0124219Z             },
2026-06-21T23:42:58.0124305Z             {
2026-06-21T23:42:58.0124414Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T23:42:58.0124506Z               "line": 207
2026-06-21T23:42:58.0124596Z             },
2026-06-21T23:42:58.0124676Z             {
2026-06-21T23:42:58.0124797Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T23:42:58.0124887Z               "line": 231
2026-06-21T23:42:58.0124972Z             },
2026-06-21T23:42:58.0125063Z             {
2026-06-21T23:42:58.0125183Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T23:42:58.0125278Z               "line": 467
2026-06-21T23:42:58.0125359Z             },
2026-06-21T23:42:58.0125441Z             {
2026-06-21T23:42:58.0125573Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T23:42:58.0125761Z               "line": 25
2026-06-21T23:42:58.0125845Z             },
2026-06-21T23:42:58.0125921Z             {
2026-06-21T23:42:58.0126046Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T23:42:58.0126132Z               "line": 120
2026-06-21T23:42:58.0126225Z             },
2026-06-21T23:42:58.0126315Z             {
2026-06-21T23:42:58.0126431Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T23:42:58.0126523Z               "line": 148
2026-06-21T23:42:58.0126609Z             },
2026-06-21T23:42:58.0126690Z             {
2026-06-21T23:42:58.0126806Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T23:42:58.0126971Z               "line": 165
2026-06-21T23:42:58.0127049Z             },
2026-06-21T23:42:58.0127120Z             {
2026-06-21T23:42:58.0127243Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T23:42:58.0127325Z               "line": 180
2026-06-21T23:42:58.0127415Z             },
2026-06-21T23:42:58.0127492Z             {
2026-06-21T23:42:58.0127625Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T23:42:58.0127707Z               "line": 198
2026-06-21T23:42:58.0127792Z             },
2026-06-21T23:42:58.0127868Z             {
2026-06-21T23:42:58.0127974Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T23:42:58.0128068Z               "line": 207
2026-06-21T23:42:58.0128149Z             },
2026-06-21T23:42:58.0128235Z             {
2026-06-21T23:42:58.0128360Z               "path": "crates/spt-store/src/project.rs",
2026-06-21T23:42:58.0128445Z               "line": 16
2026-06-21T23:42:58.0128536Z             },
2026-06-21T23:42:58.0128618Z             {
2026-06-21T23:42:58.0128740Z               "path": "crates/spt-store/src/project.rs",
2026-06-21T23:42:58.0128830Z               "line": 63
2026-06-21T23:42:58.0128911Z             }
2026-06-21T23:42:58.0129090Z           ]
2026-06-21T23:42:58.0129180Z         },
2026-06-21T23:42:58.0129267Z         "int": {
2026-06-21T23:42:58.0129358Z           "complete": false,
2026-06-21T23:42:58.0129457Z           "evidence": []
2026-06-21T23:42:58.0129534Z         },
2026-06-21T23:42:58.0129620Z         "unit": {
2026-06-21T23:42:58.0129715Z           "complete": true,
2026-06-21T23:42:58.0129796Z           "evidence": [
2026-06-21T23:42:58.0129877Z             {
2026-06-21T23:42:58.0129997Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T23:42:58.0130077Z               "line": 584
2026-06-21T23:42:58.0130158Z             },
2026-06-21T23:42:58.0130240Z             {
2026-06-21T23:42:58.0130363Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T23:42:58.0130444Z               "line": 594
2026-06-21T23:42:58.0130526Z             },
2026-06-21T23:42:58.0130597Z             {
2026-06-21T23:42:58.0130716Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T23:42:58.0130807Z               "line": 616
2026-06-21T23:42:58.0130880Z             },
2026-06-21T23:42:58.0130969Z             {
2026-06-21T23:42:58.0131079Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T23:42:58.0131180Z               "line": 632
2026-06-21T23:42:58.0131260Z             },
2026-06-21T23:42:58.0131336Z             {
2026-06-21T23:42:58.0131461Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-21T23:42:58.0131547Z               "line": 690
2026-06-21T23:42:58.0131631Z             },
2026-06-21T23:42:58.0131716Z             {
2026-06-21T23:42:58.0131841Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T23:42:58.0131927Z               "line": 472
2026-06-21T23:42:58.0132012Z             },
2026-06-21T23:42:58.0132098Z             {
2026-06-21T23:42:58.0132218Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-21T23:42:58.0132303Z               "line": 507
2026-06-21T23:42:58.0132383Z             },
2026-06-21T23:42:58.0132471Z             {
2026-06-21T23:42:58.0132698Z               "path": "crates/spt-store/src/project.rs",
2026-06-21T23:42:58.0132790Z               "line": 120
2026-06-21T23:42:58.0132876Z             },
2026-06-21T23:42:58.0132956Z             {
2026-06-21T23:42:58.0135986Z               "path": "crates/spt-store/src/project.rs",
2026-06-21T23:42:58.0136100Z               "line": 128
2026-06-21T23:42:58.0136190Z             }
2026-06-21T23:42:58.0136273Z           ]
2026-06-21T23:42:58.0136359Z         }
2026-06-21T23:42:58.0136447Z       }
2026-06-21T23:42:58.0136529Z     },
2026-06-21T23:42:58.0136616Z     {
2026-06-21T23:42:58.0136711Z       "id": "REQ-SUBNET-1",
2026-06-21T23:42:58.0137164Z       "title": "spt subnet noun namespace: status view (bare + status [NAME] [--nodes]), create (QR/otpauth), show-code; spt pair deleted",
2026-06-21T23:42:58.0137251Z       "requiredStages": [
2026-06-21T23:42:58.0137342Z         "impl",
2026-06-21T23:42:58.0137417Z         "unit"
2026-06-21T23:42:58.0137493Z       ],
2026-06-21T23:42:58.0137580Z       "stages": {
2026-06-21T23:42:58.0137656Z         "doc": {
2026-06-21T23:42:58.0137765Z           "complete": false,
2026-06-21T23:42:58.0137861Z           "evidence": []
2026-06-21T23:42:58.0137948Z         },
2026-06-21T23:42:58.0138033Z         "impl": {
2026-06-21T23:42:58.0138113Z           "complete": true,
2026-06-21T23:42:58.0138195Z           "evidence": [
2026-06-21T23:42:58.0138277Z             {
2026-06-21T23:42:58.0138414Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:42:58.0138495Z               "line": 281
2026-06-21T23:42:58.0138577Z             },
2026-06-21T23:42:58.0138657Z             {
2026-06-21T23:42:58.0138791Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:42:58.0138887Z               "line": 651
2026-06-21T23:42:58.0139043Z             },
2026-06-21T23:42:58.0139135Z             {
2026-06-21T23:42:58.0139245Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0139352Z               "line": 3399
2026-06-21T23:42:58.0139447Z             },
2026-06-21T23:42:58.0139519Z             {
2026-06-21T23:42:58.0139622Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0139707Z               "line": 3709
2026-06-21T23:42:58.0139794Z             },
2026-06-21T23:42:58.0139875Z             {
2026-06-21T23:42:58.0139979Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0140060Z               "line": 3728
2026-06-21T23:42:58.0140147Z             },
2026-06-21T23:42:58.0140228Z             {
2026-06-21T23:42:58.0140327Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0140418Z               "line": 3792
2026-06-21T23:42:58.0140505Z             },
2026-06-21T23:42:58.0140576Z             {
2026-06-21T23:42:58.0140670Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0140752Z               "line": 3834
2026-06-21T23:42:58.0140833Z             },
2026-06-21T23:42:58.0140914Z             {
2026-06-21T23:42:58.0141019Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0141106Z               "line": 4023
2026-06-21T23:42:58.0141191Z             },
2026-06-21T23:42:58.0141276Z             {
2026-06-21T23:42:58.0141372Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0141463Z               "line": 4093
2026-06-21T23:42:58.0141548Z             },
2026-06-21T23:42:58.0141624Z             {
2026-06-21T23:42:58.0141726Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0141811Z               "line": 4317
2026-06-21T23:42:58.0141891Z             },
2026-06-21T23:42:58.0141973Z             {
2026-06-21T23:42:58.0142074Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0142158Z               "line": 4961
2026-06-21T23:42:58.0142244Z             },
2026-06-21T23:42:58.0142329Z             {
2026-06-21T23:42:58.0142435Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T23:42:58.0142529Z               "line": 418
2026-06-21T23:42:58.0142610Z             }
2026-06-21T23:42:58.0142692Z           ]
2026-06-21T23:42:58.0142896Z         },
2026-06-21T23:42:58.0142983Z         "int": {
2026-06-21T23:42:58.0143074Z           "complete": false,
2026-06-21T23:42:58.0143155Z           "evidence": []
2026-06-21T23:42:58.0143235Z         },
2026-06-21T23:42:58.0143321Z         "unit": {
2026-06-21T23:42:58.0143412Z           "complete": true,
2026-06-21T23:42:58.0143493Z           "evidence": [
2026-06-21T23:42:58.0143573Z             {
2026-06-21T23:42:58.0143698Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:42:58.0143784Z               "line": 1584
2026-06-21T23:42:58.0143865Z             },
2026-06-21T23:42:58.0143946Z             {
2026-06-21T23:42:58.0144145Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0144227Z               "line": 9964
2026-06-21T23:42:58.0144310Z             },
2026-06-21T23:42:58.0144398Z             {
2026-06-21T23:42:58.0144497Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0144578Z               "line": 10134
2026-06-21T23:42:58.0144664Z             },
2026-06-21T23:42:58.0144739Z             {
2026-06-21T23:42:58.0144838Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0144929Z               "line": 10141
2026-06-21T23:42:58.0145011Z             },
2026-06-21T23:42:58.0145092Z             {
2026-06-21T23:42:58.0145196Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0145273Z               "line": 10194
2026-06-21T23:42:58.0145359Z             },
2026-06-21T23:42:58.0145439Z             {
2026-06-21T23:42:58.0145535Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0145617Z               "line": 10211
2026-06-21T23:42:58.0145702Z             },
2026-06-21T23:42:58.0145787Z             {
2026-06-21T23:42:58.0145884Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0145974Z               "line": 10241
2026-06-21T23:42:58.0146055Z             },
2026-06-21T23:42:58.0146135Z             {
2026-06-21T23:42:58.0146241Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0146331Z               "line": 10357
2026-06-21T23:42:58.0146417Z             },
2026-06-21T23:42:58.0146498Z             {
2026-06-21T23:42:58.0146599Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0146679Z               "line": 10508
2026-06-21T23:42:58.0146764Z             }
2026-06-21T23:42:58.0146852Z           ]
2026-06-21T23:42:58.0146928Z         }
2026-06-21T23:42:58.0147008Z       }
2026-06-21T23:42:58.0147094Z     },
2026-06-21T23:42:58.0147167Z     {
2026-06-21T23:42:58.0147262Z       "id": "REQ-SUBNET-2",
2026-06-21T23:42:58.0147499Z       "title": "Guided join e2e: spt subnet join CLI initiator + always-on daemon pairing responder",
2026-06-21T23:42:58.0147597Z       "requiredStages": [
2026-06-21T23:42:58.0147672Z         "impl",
2026-06-21T23:42:58.0147758Z         "unit",
2026-06-21T23:42:58.0147839Z         "int"
2026-06-21T23:42:58.0147926Z       ],
2026-06-21T23:42:58.0148006Z       "stages": {
2026-06-21T23:42:58.0148091Z         "doc": {
2026-06-21T23:42:58.0148179Z           "complete": true,
2026-06-21T23:42:58.0148255Z           "evidence": [
2026-06-21T23:42:58.0148339Z             {
2026-06-21T23:42:58.0148493Z               "path": "docs/adr/0005-totp-seeded-spake2-node-pairing.md",
2026-06-21T23:42:58.0148584Z               "line": 60
2026-06-21T23:42:58.0148668Z             }
2026-06-21T23:42:58.0148745Z           ]
2026-06-21T23:42:58.0148832Z         },
2026-06-21T23:42:58.0148912Z         "impl": {
2026-06-21T23:42:58.0149090Z           "complete": true,
2026-06-21T23:42:58.0149175Z           "evidence": [
2026-06-21T23:42:58.0149250Z             {
2026-06-21T23:42:58.0149370Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T23:42:58.0149481Z               "line": 980
2026-06-21T23:42:58.0149555Z             },
2026-06-21T23:42:58.0149637Z             {
2026-06-21T23:42:58.0149757Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:42:58.0149833Z               "line": 2199
2026-06-21T23:42:58.0150017Z             },
2026-06-21T23:42:58.0150098Z             {
2026-06-21T23:42:58.0150210Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T23:42:58.0150296Z               "line": 683
2026-06-21T23:42:58.0150377Z             },
2026-06-21T23:42:58.0150464Z             {
2026-06-21T23:42:58.0150568Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-21T23:42:58.0150659Z               "line": 867
2026-06-21T23:42:58.0150741Z             },
2026-06-21T23:42:58.0150817Z             {
2026-06-21T23:42:58.0150945Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T23:42:58.0151022Z               "line": 26
2026-06-21T23:42:58.0151202Z             },
2026-06-21T23:42:58.0151278Z             {
2026-06-21T23:42:58.0151403Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T23:42:58.0151493Z               "line": 60
2026-06-21T23:42:58.0151569Z             },
2026-06-21T23:42:58.0151642Z             {
2026-06-21T23:42:58.0151769Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T23:42:58.0151850Z               "line": 168
2026-06-21T23:42:58.0151932Z             },
2026-06-21T23:42:58.0152019Z             {
2026-06-21T23:42:58.0152142Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T23:42:58.0152218Z               "line": 295
2026-06-21T23:42:58.0152300Z             },
2026-06-21T23:42:58.0152380Z             {
2026-06-21T23:42:58.0152499Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T23:42:58.0152587Z               "line": 417
2026-06-21T23:42:58.0152663Z             },
2026-06-21T23:42:58.0152737Z             {
2026-06-21T23:42:58.0152860Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-21T23:42:58.0152942Z               "line": 252
2026-06-21T23:42:58.0153024Z             },
2026-06-21T23:42:58.0153109Z             {
2026-06-21T23:42:58.0153213Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0153309Z               "line": 3755
2026-06-21T23:42:58.0153409Z             },
2026-06-21T23:42:58.0153494Z             {
2026-06-21T23:42:58.0153601Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0153686Z               "line": 4256
2026-06-21T23:42:58.0153771Z             },
2026-06-21T23:42:58.0153858Z             {
2026-06-21T23:42:58.0153958Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0154039Z               "line": 4892
2026-06-21T23:42:58.0154124Z             }
2026-06-21T23:42:58.0154206Z           ]
2026-06-21T23:42:58.0154287Z         },
2026-06-21T23:42:58.0154377Z         "int": {
2026-06-21T23:42:58.0154462Z           "complete": true,
2026-06-21T23:42:58.0154564Z           "evidence": [
2026-06-21T23:42:58.0154639Z             {
2026-06-21T23:42:58.0154763Z               "path": "crates/spt-daemon/tests/pairjoin.rs",
2026-06-21T23:42:58.0154845Z               "line": 22
2026-06-21T23:42:58.0154926Z             },
2026-06-21T23:42:58.0155011Z             {
2026-06-21T23:42:58.0155134Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T23:42:58.0155220Z               "line": 645
2026-06-21T23:42:58.0155304Z             },
2026-06-21T23:42:58.0155380Z             {
2026-06-21T23:42:58.0155499Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T23:42:58.0155581Z               "line": 887
2026-06-21T23:42:58.0155661Z             }
2026-06-21T23:42:58.0155741Z           ]
2026-06-21T23:42:58.0155828Z         },
2026-06-21T23:42:58.0155919Z         "unit": {
2026-06-21T23:42:58.0156009Z           "complete": true,
2026-06-21T23:42:58.0156104Z           "evidence": [
2026-06-21T23:42:58.0156172Z             {
2026-06-21T23:42:58.0156295Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T23:42:58.0156380Z               "line": 586
2026-06-21T23:42:58.0156473Z             },
2026-06-21T23:42:58.0156553Z             {
2026-06-21T23:42:58.0156653Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0156744Z               "line": 10004
2026-06-21T23:42:58.0156906Z             },
2026-06-21T23:42:58.0156996Z             {
2026-06-21T23:42:58.0157088Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0157173Z               "line": 10715
2026-06-21T23:42:58.0157258Z             }
2026-06-21T23:42:58.0157334Z           ]
2026-06-21T23:42:58.0157408Z         }
2026-06-21T23:42:58.0157493Z       }
2026-06-21T23:42:58.0157573Z     },
2026-06-21T23:42:58.0157659Z     {
2026-06-21T23:42:58.0157742Z       "id": "REQ-SUBNET-3",
2026-06-21T23:42:58.0158015Z       "title": "Node labels: hostname-default, gossiped, addressable in @node qualifiers (refuse-on-ambiguity)",
2026-06-21T23:42:58.0158251Z       "requiredStages": [
2026-06-21T23:42:58.0158332Z         "impl",
2026-06-21T23:42:58.0158414Z         "unit"
2026-06-21T23:42:58.0158496Z       ],
2026-06-21T23:42:58.0158571Z       "stages": {
2026-06-21T23:42:58.0158652Z         "doc": {
2026-06-21T23:42:58.0158748Z           "complete": false,
2026-06-21T23:42:58.0158834Z           "evidence": []
2026-06-21T23:42:58.0158918Z         },
2026-06-21T23:42:58.0159082Z         "impl": {
2026-06-21T23:42:58.0159172Z           "complete": true,
2026-06-21T23:42:58.0159252Z           "evidence": [
2026-06-21T23:42:58.0159340Z             {
2026-06-21T23:42:58.0159472Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:42:58.0159558Z               "line": 152
2026-06-21T23:42:58.0159640Z             },
2026-06-21T23:42:58.0159711Z             {
2026-06-21T23:42:58.0159840Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:42:58.0159916Z               "line": 299
2026-06-21T23:42:58.0160002Z             },
2026-06-21T23:42:58.0160088Z             {
2026-06-21T23:42:58.0160211Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:42:58.0160294Z               "line": 443
2026-06-21T23:42:58.0160375Z             },
2026-06-21T23:42:58.0160458Z             {
2026-06-21T23:42:58.0160582Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:42:58.0160658Z               "line": 532
2026-06-21T23:42:58.0160738Z             },
2026-06-21T23:42:58.0160813Z             {
2026-06-21T23:42:58.0160938Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:42:58.0161019Z               "line": 125
2026-06-21T23:42:58.0161095Z             },
2026-06-21T23:42:58.0161176Z             {
2026-06-21T23:42:58.0161291Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:42:58.0161372Z               "line": 253
2026-06-21T23:42:58.0161452Z             },
2026-06-21T23:42:58.0161533Z             {
2026-06-21T23:42:58.0161649Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:42:58.0161739Z               "line": 264
2026-06-21T23:42:58.0161819Z             },
2026-06-21T23:42:58.0161897Z             {
2026-06-21T23:42:58.0162010Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:42:58.0162096Z               "line": 285
2026-06-21T23:42:58.0162182Z             },
2026-06-21T23:42:58.0162260Z             {
2026-06-21T23:42:58.0162378Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:42:58.0162464Z               "line": 621
2026-06-21T23:42:58.0162541Z             },
2026-06-21T23:42:58.0162617Z             {
2026-06-21T23:42:58.0162726Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:42:58.0162812Z               "line": 680
2026-06-21T23:42:58.0162889Z             },
2026-06-21T23:42:58.0162978Z             {
2026-06-21T23:42:58.0163098Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T23:42:58.0163180Z               "line": 61
2026-06-21T23:42:58.0163265Z             },
2026-06-21T23:42:58.0163344Z             {
2026-06-21T23:42:58.0163469Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T23:42:58.0163555Z               "line": 90
2026-06-21T23:42:58.0163636Z             },
2026-06-21T23:42:58.0163716Z             {
2026-06-21T23:42:58.0164036Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T23:42:58.0164117Z               "line": 125
2026-06-21T23:42:58.0164203Z             },
2026-06-21T23:42:58.0164284Z             {
2026-06-21T23:42:58.0164393Z               "path": "crates/spt-store/src/hostlabel.rs",
2026-06-21T23:42:58.0164480Z               "line": 9
2026-06-21T23:42:58.0164561Z             },
2026-06-21T23:42:58.0164641Z             {
2026-06-21T23:42:58.0164737Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0164824Z               "line": 4093
2026-06-21T23:42:58.0164908Z             },
2026-06-21T23:42:58.0164985Z             {
2026-06-21T23:42:58.0165185Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T23:42:58.0165275Z               "line": 445
2026-06-21T23:42:58.0165357Z             }
2026-06-21T23:42:58.0165449Z           ]
2026-06-21T23:42:58.0165528Z         },
2026-06-21T23:42:58.0165613Z         "int": {
2026-06-21T23:42:58.0165708Z           "complete": false,
2026-06-21T23:42:58.0165803Z           "evidence": []
2026-06-21T23:42:58.0165892Z         },
2026-06-21T23:42:58.0165963Z         "unit": {
2026-06-21T23:42:58.0166049Z           "complete": true,
2026-06-21T23:42:58.0166127Z           "evidence": [
2026-06-21T23:42:58.0166212Z             {
2026-06-21T23:42:58.0166341Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:42:58.0166427Z               "line": 1356
2026-06-21T23:42:58.0166512Z             },
2026-06-21T23:42:58.0166593Z             {
2026-06-21T23:42:58.0166718Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:42:58.0166808Z               "line": 1713
2026-06-21T23:42:58.0166898Z             },
2026-06-21T23:42:58.0166984Z             {
2026-06-21T23:42:58.0167104Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T23:42:58.0167189Z               "line": 892
2026-06-21T23:42:58.0167399Z             },
2026-06-21T23:42:58.0167485Z             {
2026-06-21T23:42:58.0167609Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:42:58.0167691Z               "line": 991
2026-06-21T23:42:58.0167780Z             },
2026-06-21T23:42:58.0167861Z             {
2026-06-21T23:42:58.0167982Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:42:58.0168071Z               "line": 1041
2026-06-21T23:42:58.0168152Z             },
2026-06-21T23:42:58.0168229Z             {
2026-06-21T23:42:58.0168344Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:42:58.0168428Z               "line": 1100
2026-06-21T23:42:58.0168504Z             },
2026-06-21T23:42:58.0168590Z             {
2026-06-21T23:42:58.0168708Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-21T23:42:58.0168793Z               "line": 234
2026-06-21T23:42:58.0168864Z             },
2026-06-21T23:42:58.0169018Z             {
2026-06-21T23:42:58.0169141Z               "path": "crates/spt-store/src/hostlabel.rs",
2026-06-21T23:42:58.0169217Z               "line": 49
2026-06-21T23:42:58.0169308Z             },
2026-06-21T23:42:58.0169389Z             {
2026-06-21T23:42:58.0169488Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0169571Z               "line": 10357
2026-06-21T23:42:58.0169661Z             },
2026-06-21T23:42:58.0169746Z             {
2026-06-21T23:42:58.0169842Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0169933Z               "line": 10463
2026-06-21T23:42:58.0170009Z             },
2026-06-21T23:42:58.0170095Z             {
2026-06-21T23:42:58.0170190Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0170271Z               "line": 10681
2026-06-21T23:42:58.0170361Z             }
2026-06-21T23:42:58.0170442Z           ]
2026-06-21T23:42:58.0170525Z         }
2026-06-21T23:42:58.0170606Z       }
2026-06-21T23:42:58.0170699Z     },
2026-06-21T23:42:58.0170781Z     {
2026-06-21T23:42:58.0170873Z       "id": "REQ-SUBNET-4",
2026-06-21T23:42:58.0171161Z       "title": "Subnet membership mutations elevation-gated (create = seed reveal; join = trust-boundary enrollment)",
2026-06-21T23:42:58.0171369Z       "requiredStages": [
2026-06-21T23:42:58.0171445Z         "impl",
2026-06-21T23:42:58.0171526Z         "unit"
2026-06-21T23:42:58.0171609Z       ],
2026-06-21T23:42:58.0171697Z       "stages": {
2026-06-21T23:42:58.0171779Z         "doc": {
2026-06-21T23:42:58.0171871Z           "complete": true,
2026-06-21T23:42:58.0171956Z           "evidence": [
2026-06-21T23:42:58.0172045Z             {
2026-06-21T23:42:58.0172190Z               "path": "docs/adr/0005-totp-seeded-spake2-node-pairing.md",
2026-06-21T23:42:58.0172275Z               "line": 60
2026-06-21T23:42:58.0172457Z             }
2026-06-21T23:42:58.0172528Z           ]
2026-06-21T23:42:58.0172614Z         },
2026-06-21T23:42:58.0172699Z         "impl": {
2026-06-21T23:42:58.0172796Z           "complete": true,
2026-06-21T23:42:58.0172876Z           "evidence": [
2026-06-21T23:42:58.0172962Z             {
2026-06-21T23:42:58.0173062Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0173144Z               "line": 3399
2026-06-21T23:42:58.0173228Z             },
2026-06-21T23:42:58.0173309Z             {
2026-06-21T23:42:58.0173420Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0173510Z               "line": 4859
2026-06-21T23:42:58.0173591Z             },
2026-06-21T23:42:58.0173677Z             {
2026-06-21T23:42:58.0173773Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0173867Z               "line": 4892
2026-06-21T23:42:58.0173948Z             }
2026-06-21T23:42:58.0174029Z           ]
2026-06-21T23:42:58.0174106Z         },
2026-06-21T23:42:58.0174205Z         "int": {
2026-06-21T23:42:58.0174305Z           "complete": false,
2026-06-21T23:42:58.0174391Z           "evidence": []
2026-06-21T23:42:58.0174472Z         },
2026-06-21T23:42:58.0174553Z         "unit": {
2026-06-21T23:42:58.0174643Z           "complete": true,
2026-06-21T23:42:58.0174731Z           "evidence": [
2026-06-21T23:42:58.0174811Z             {
2026-06-21T23:42:58.0174915Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0174997Z               "line": 10120
2026-06-21T23:42:58.0175078Z             },
2026-06-21T23:42:58.0175149Z             {
2026-06-21T23:42:58.0175254Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0175346Z               "line": 10194
2026-06-21T23:42:58.0175435Z             }
2026-06-21T23:42:58.0175525Z           ]
2026-06-21T23:42:58.0175602Z         }
2026-06-21T23:42:58.0175689Z       }
2026-06-21T23:42:58.0175773Z     },
2026-06-21T23:42:58.0175850Z     {
2026-06-21T23:42:58.0175941Z       "id": "REQ-SUBNET-5",
2026-06-21T23:42:58.0177186Z       "title": "Per-subnet serve-state: spt subnet detach <NAME> [--save] / attach <NAME> [--save] — daemon keeps running, stops/starts advertising + connecting for that subnet (peer pump + responder selective); --save persists the startup default in daemon config; the all-attached banner gains per-subnet states (M8 decision 6, --save renamed from --auto per decision 25 session)",
2026-06-21T23:42:58.0177293Z       "requiredStages": [
2026-06-21T23:42:58.0177373Z         "impl",
2026-06-21T23:42:58.0177463Z         "unit",
2026-06-21T23:42:58.0177545Z         "int"
2026-06-21T23:42:58.0177631Z       ],
2026-06-21T23:42:58.0177707Z       "stages": {
2026-06-21T23:42:58.0177787Z         "doc": {
2026-06-21T23:42:58.0177883Z           "complete": false,
2026-06-21T23:42:58.0177964Z           "evidence": []
2026-06-21T23:42:58.0178050Z         },
2026-06-21T23:42:58.0178131Z         "impl": {
2026-06-21T23:42:58.0178218Z           "complete": true,
2026-06-21T23:42:58.0178302Z           "evidence": [
2026-06-21T23:42:58.0178383Z             {
2026-06-21T23:42:58.0178504Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-21T23:42:58.0178589Z               "line": 128
2026-06-21T23:42:58.0178674Z             },
2026-06-21T23:42:58.0178756Z             {
2026-06-21T23:42:58.0178881Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-21T23:42:58.0179159Z               "line": 413
2026-06-21T23:42:58.0179236Z             },
2026-06-21T23:42:58.0179315Z             {
2026-06-21T23:42:58.0179424Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T23:42:58.0179515Z               "line": 74
2026-06-21T23:42:58.0179597Z             },
2026-06-21T23:42:58.0179677Z             {
2026-06-21T23:42:58.0179796Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T23:42:58.0179883Z               "line": 332
2026-06-21T23:42:58.0179963Z             },
2026-06-21T23:42:58.0180035Z             {
2026-06-21T23:42:58.0180150Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T23:42:58.0180335Z               "line": 621
2026-06-21T23:42:58.0180412Z             },
2026-06-21T23:42:58.0180498Z             {
2026-06-21T23:42:58.0180607Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T23:42:58.0180688Z               "line": 31
2026-06-21T23:42:58.0180775Z             },
2026-06-21T23:42:58.0180860Z             {
2026-06-21T23:42:58.0180979Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T23:42:58.0181065Z               "line": 50
2026-06-21T23:42:58.0181156Z             },
2026-06-21T23:42:58.0181236Z             {
2026-06-21T23:42:58.0181361Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T23:42:58.0181443Z               "line": 69
2026-06-21T23:42:58.0181527Z             },
2026-06-21T23:42:58.0181598Z             {
2026-06-21T23:42:58.0181721Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T23:42:58.0181812Z               "line": 113
2026-06-21T23:42:58.0181891Z             },
2026-06-21T23:42:58.0181976Z             {
2026-06-21T23:42:58.0182101Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-21T23:42:58.0182192Z               "line": 25
2026-06-21T23:42:58.0182272Z             },
2026-06-21T23:42:58.0182363Z             {
2026-06-21T23:42:58.0182492Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-21T23:42:58.0182577Z               "line": 34
2026-06-21T23:42:58.0182663Z             },
2026-06-21T23:42:58.0182745Z             {
2026-06-21T23:42:58.0182869Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-21T23:42:58.0182959Z               "line": 17
2026-06-21T23:42:58.0183031Z             },
2026-06-21T23:42:58.0183117Z             {
2026-06-21T23:42:58.0183221Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0183317Z               "line": 4817
2026-06-21T23:42:58.0183403Z             },
2026-06-21T23:42:58.0183489Z             {
2026-06-21T23:42:58.0183598Z               "path": "crates/spt/src/wansend.rs",
2026-06-21T23:42:58.0183685Z               "line": 419
2026-06-21T23:42:58.0183775Z             }
2026-06-21T23:42:58.0183856Z           ]
2026-06-21T23:42:58.0183932Z         },
2026-06-21T23:42:58.0184014Z         "int": {
2026-06-21T23:42:58.0184108Z           "complete": true,
2026-06-21T23:42:58.0184199Z           "evidence": [
2026-06-21T23:42:58.0184272Z             {
2026-06-21T23:42:58.0184385Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T23:42:58.0184465Z               "line": 821
2026-06-21T23:42:58.0184546Z             }
2026-06-21T23:42:58.0184627Z           ]
2026-06-21T23:42:58.0184709Z         },
2026-06-21T23:42:58.0184794Z         "unit": {
2026-06-21T23:42:58.0184875Z           "complete": true,
2026-06-21T23:42:58.0184966Z           "evidence": [
2026-06-21T23:42:58.0185052Z             {
2026-06-21T23:42:58.0185170Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T23:42:58.0185248Z               "line": 341
2026-06-21T23:42:58.0185366Z             },
2026-06-21T23:42:58.0185451Z             {
2026-06-21T23:42:58.0185557Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-21T23:42:58.0185643Z               "line": 1115
2026-06-21T23:42:58.0185729Z             },
2026-06-21T23:42:58.0185814Z             {
2026-06-21T23:42:58.0186038Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-21T23:42:58.0186133Z               "line": 151
2026-06-21T23:42:58.0186220Z             },
2026-06-21T23:42:58.0186301Z             {
2026-06-21T23:42:58.0186424Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-21T23:42:58.0186511Z               "line": 61
2026-06-21T23:42:58.0186597Z             },
2026-06-21T23:42:58.0186677Z             {
2026-06-21T23:42:58.0186799Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-21T23:42:58.0186886Z               "line": 111
2026-06-21T23:42:58.0186966Z             },
2026-06-21T23:42:58.0187051Z             {
2026-06-21T23:42:58.0187228Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-21T23:42:58.0187313Z               "line": 138
2026-06-21T23:42:58.0187394Z             },
2026-06-21T23:42:58.0187480Z             {
2026-06-21T23:42:58.0187604Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-21T23:42:58.0187684Z               "line": 148
2026-06-21T23:42:58.0187770Z             },
2026-06-21T23:42:58.0187858Z             {
2026-06-21T23:42:58.0187962Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0188056Z               "line": 10021
2026-06-21T23:42:58.0188143Z             }
2026-06-21T23:42:58.0188224Z           ]
2026-06-21T23:42:58.0188300Z         }
2026-06-21T23:42:58.0188386Z       }
2026-06-21T23:42:58.0188463Z     },
2026-06-21T23:42:58.0188548Z     {
2026-06-21T23:42:58.0188638Z       "id": "REQ-SUBNET-6",
2026-06-21T23:42:58.0189460Z       "title": "Trust lifecycle verbs, elevation-gated: spt subnet leave <NAME> (membership exit) and spt subnet prune <node> (removes a dead identity's trust + registry rows, killing its dead dials; trust mutation = security surface, REQ-PAIR-6 gate machinery) (M8 decisions 6-7)",
2026-06-21T23:42:58.0189568Z       "requiredStages": [
2026-06-21T23:42:58.0189648Z         "impl",
2026-06-21T23:42:58.0189734Z         "unit"
2026-06-21T23:42:58.0189805Z       ],
2026-06-21T23:42:58.0189899Z       "stages": {
2026-06-21T23:42:58.0189979Z         "doc": {
2026-06-21T23:42:58.0190071Z           "complete": false,
2026-06-21T23:42:58.0190157Z           "evidence": []
2026-06-21T23:42:58.0190242Z         },
2026-06-21T23:42:58.0190323Z         "impl": {
2026-06-21T23:42:58.0190400Z           "complete": true,
2026-06-21T23:42:58.0190495Z           "evidence": [
2026-06-21T23:42:58.0190580Z             {
2026-06-21T23:42:58.0190696Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:42:58.0190776Z               "line": 254
2026-06-21T23:42:58.0190862Z             },
2026-06-21T23:42:58.0190962Z             {
2026-06-21T23:42:58.0191063Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0191153Z               "line": 4475
2026-06-21T23:42:58.0191234Z             },
2026-06-21T23:42:58.0191315Z             {
2026-06-21T23:42:58.0191415Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0191501Z               "line": 4492
2026-06-21T23:42:58.0191596Z             },
2026-06-21T23:42:58.0191674Z             {
2026-06-21T23:42:58.0191782Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0191873Z               "line": 4545
2026-06-21T23:42:58.0191955Z             },
2026-06-21T23:42:58.0192040Z             {
2026-06-21T23:42:58.0192139Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0192234Z               "line": 4568
2026-06-21T23:42:58.0192315Z             }
2026-06-21T23:42:58.0192400Z           ]
2026-06-21T23:42:58.0192485Z         },
2026-06-21T23:42:58.0192555Z         "int": {
2026-06-21T23:42:58.0192647Z           "complete": false,
2026-06-21T23:42:58.0192743Z           "evidence": []
2026-06-21T23:42:58.0192828Z         },
2026-06-21T23:42:58.0192909Z         "unit": {
2026-06-21T23:42:58.0193010Z           "complete": true,
2026-06-21T23:42:58.0193095Z           "evidence": [
2026-06-21T23:42:58.0193161Z             {
2026-06-21T23:42:58.0193272Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0193462Z               "line": 10035
2026-06-21T23:42:58.0193548Z             },
2026-06-21T23:42:58.0193629Z             {
2026-06-21T23:42:58.0193724Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0193814Z               "line": 10068
2026-06-21T23:42:58.0193892Z             },
2026-06-21T23:42:58.0193972Z             {
2026-06-21T23:42:58.0194068Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0194158Z               "line": 10077
2026-06-21T23:42:58.0194236Z             }
2026-06-21T23:42:58.0194315Z           ]
2026-06-21T23:42:58.0194402Z         }
2026-06-21T23:42:58.0194593Z       }
2026-06-21T23:42:58.0194668Z     },
2026-06-21T23:42:58.0194750Z     {
2026-06-21T23:42:58.0194846Z       "id": "REQ-SUBNET-7",
2026-06-21T23:42:58.0196485Z       "title": "Per-machine re-pair trust overwrite: registry rows carry a hashed stable machine identifier (OS machine id /etc/machine-id|MachineGuid, domain-separated SHA-256 before gossip, spt-minted persisted UUID fallback; additive serde-default field — old rows parse clean); a COMPLETED pairing ceremony presenting the same node label AND machine id as an existing trusted row evicts the superseded identity's trust + registry rows on the seed-holder and replicates the eviction; a gossiped claim alone never evicts trust (M8 decisions 13, 22)",
2026-06-21T23:42:58.0196598Z       "requiredStages": [
2026-06-21T23:42:58.0196684Z         "impl",
2026-06-21T23:42:58.0196767Z         "unit"
2026-06-21T23:42:58.0196852Z       ],
2026-06-21T23:42:58.0196936Z       "stages": {
2026-06-21T23:42:58.0197018Z         "doc": {
2026-06-21T23:42:58.0197119Z           "complete": false,
2026-06-21T23:42:58.0197204Z           "evidence": []
2026-06-21T23:42:58.0197289Z         },
2026-06-21T23:42:58.0197379Z         "impl": {
2026-06-21T23:42:58.0197470Z           "complete": true,
2026-06-21T23:42:58.0197564Z           "evidence": [
2026-06-21T23:42:58.0197644Z             {
2026-06-21T23:42:58.0197773Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-21T23:42:58.0197860Z               "line": 17
2026-06-21T23:42:58.0197949Z             },
2026-06-21T23:42:58.0198030Z             {
2026-06-21T23:42:58.0198150Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T23:42:58.0198240Z               "line": 103
2026-06-21T23:42:58.0198321Z             },
2026-06-21T23:42:58.0198413Z             {
2026-06-21T23:42:58.0198527Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-21T23:42:58.0198621Z               "line": 312
2026-06-21T23:42:58.0198703Z             },
2026-06-21T23:42:58.0198793Z             {
2026-06-21T23:42:58.0198931Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-21T23:42:58.0199122Z               "line": 131
2026-06-21T23:42:58.0199212Z             },
2026-06-21T23:42:58.0199294Z             {
2026-06-21T23:42:58.0199423Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:42:58.0199518Z               "line": 160
2026-06-21T23:42:58.0199609Z             },
2026-06-21T23:42:58.0199696Z             {
2026-06-21T23:42:58.0199818Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:42:58.0199914Z               "line": 447
2026-06-21T23:42:58.0199996Z             },
2026-06-21T23:42:58.0200095Z             {
2026-06-21T23:42:58.0200213Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:42:58.0200304Z               "line": 670
2026-06-21T23:42:58.0200394Z             },
2026-06-21T23:42:58.0200473Z             {
2026-06-21T23:42:58.0200602Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:42:58.0200693Z               "line": 710
2026-06-21T23:42:58.0200783Z             },
2026-06-21T23:42:58.0200864Z             {
2026-06-21T23:42:58.0204123Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:42:58.0204213Z               "line": 766
2026-06-21T23:42:58.0204304Z             },
2026-06-21T23:42:58.0204523Z             {
2026-06-21T23:42:58.0204651Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T23:42:58.0204743Z               "line": 136
2026-06-21T23:42:58.0204833Z             },
2026-06-21T23:42:58.0204913Z             {
2026-06-21T23:42:58.0205043Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:42:58.0205125Z               "line": 139
2026-06-21T23:42:58.0205209Z             }
2026-06-21T23:42:58.0205291Z           ]
2026-06-21T23:42:58.0205373Z         },
2026-06-21T23:42:58.0205458Z         "int": {
2026-06-21T23:42:58.0205543Z           "complete": false,
2026-06-21T23:42:58.0205632Z           "evidence": []
2026-06-21T23:42:58.0205810Z         },
2026-06-21T23:42:58.0205900Z         "unit": {
2026-06-21T23:42:58.0205990Z           "complete": true,
2026-06-21T23:42:58.0206081Z           "evidence": [
2026-06-21T23:42:58.0206162Z             {
2026-06-21T23:42:58.0206281Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-21T23:42:58.0206378Z               "line": 136
2026-06-21T23:42:58.0206453Z             },
2026-06-21T23:42:58.0206534Z             {
2026-06-21T23:42:58.0206649Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-21T23:42:58.0206735Z               "line": 156
2026-06-21T23:42:58.0206820Z             },
2026-06-21T23:42:58.0206896Z             {
2026-06-21T23:42:58.0207026Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:42:58.0207116Z               "line": 987
2026-06-21T23:42:58.0207192Z             },
2026-06-21T23:42:58.0207278Z             {
2026-06-21T23:42:58.0207402Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-21T23:42:58.0207501Z               "line": 1009
2026-06-21T23:42:58.0207583Z             },
2026-06-21T23:42:58.0207665Z             {
2026-06-21T23:42:58.0207793Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-21T23:42:58.0207878Z               "line": 1419
2026-06-21T23:42:58.0207959Z             },
2026-06-21T23:42:58.0208044Z             {
2026-06-21T23:42:58.0208161Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-21T23:42:58.0208247Z               "line": 1036
2026-06-21T23:42:58.0208333Z             }
2026-06-21T23:42:58.0208415Z           ]
2026-06-21T23:42:58.0208495Z         }
2026-06-21T23:42:58.0208581Z       }
2026-06-21T23:42:58.0208663Z     },
2026-06-21T23:42:58.0208744Z     {
2026-06-21T23:42:58.0208838Z       "id": "REQ-SUBNET-8",
2026-06-21T23:42:58.0210074Z       "title": "Status render honesty: zero-subnet text is daemon-aware ('No subnets registered — this node is standalone.' + daemon-running-dependent blurb, never implying messaging works while the daemon is down); hint footer prints on bare spt subnet only (status drops it); a stalled pump is surfaced in subnet status, never rendered implied-healthy (M8 decisions 11-12, 23)",
2026-06-21T23:42:58.0210174Z       "requiredStages": [
2026-06-21T23:42:58.0210260Z         "impl",
2026-06-21T23:42:58.0210350Z         "unit"
2026-06-21T23:42:58.0210431Z       ],
2026-06-21T23:42:58.0210518Z       "stages": {
2026-06-21T23:42:58.0210590Z         "doc": {
2026-06-21T23:42:58.0210683Z           "complete": false,
2026-06-21T23:42:58.0210764Z           "evidence": []
2026-06-21T23:42:58.0210850Z         },
2026-06-21T23:42:58.0210935Z         "impl": {
2026-06-21T23:42:58.0211019Z           "complete": true,
2026-06-21T23:42:58.0211105Z           "evidence": [
2026-06-21T23:42:58.0211191Z             {
2026-06-21T23:42:58.0211297Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0211381Z               "line": 3835
2026-06-21T23:42:58.0211467Z             },
2026-06-21T23:42:58.0211554Z             {
2026-06-21T23:42:58.0211649Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0211739Z               "line": 3864
2026-06-21T23:42:58.0211821Z             },
2026-06-21T23:42:58.0211901Z             {
2026-06-21T23:42:58.0212001Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0212188Z               "line": 3881
2026-06-21T23:42:58.0212273Z             },
2026-06-21T23:42:58.0212354Z             {
2026-06-21T23:42:58.0212460Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0212540Z               "line": 3904
2026-06-21T23:42:58.0212631Z             },
2026-06-21T23:42:58.0212702Z             {
2026-06-21T23:42:58.0212794Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0212883Z               "line": 4318
2026-06-21T23:42:58.0212960Z             }
2026-06-21T23:42:58.0213041Z           ]
2026-06-21T23:42:58.0213123Z         },
2026-06-21T23:42:58.0213203Z         "int": {
2026-06-21T23:42:58.0213293Z           "complete": false,
2026-06-21T23:42:58.0213483Z           "evidence": []
2026-06-21T23:42:58.0213571Z         },
2026-06-21T23:42:58.0213647Z         "unit": {
2026-06-21T23:42:58.0213748Z           "complete": true,
2026-06-21T23:42:58.0213840Z           "evidence": [
2026-06-21T23:42:58.0213915Z             {
2026-06-21T23:42:58.0214020Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0214101Z               "line": 10225
2026-06-21T23:42:58.0214187Z             },
2026-06-21T23:42:58.0214267Z             {
2026-06-21T23:42:58.0214373Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0214454Z               "line": 10241
2026-06-21T23:42:58.0214535Z             }
2026-06-21T23:42:58.0214615Z           ]
2026-06-21T23:42:58.0214693Z         }
2026-06-21T23:42:58.0214778Z       }
2026-06-21T23:42:58.0214859Z     },
2026-06-21T23:42:58.0214930Z     {
2026-06-21T23:42:58.0215022Z       "id": "REQ-TERM-1",
2026-06-21T23:42:58.0215197Z       "title": "Process-supervisor terminal wrapper hosting broker PTYs",
2026-06-21T23:42:58.0215293Z       "requiredStages": [
2026-06-21T23:42:58.0215375Z         "impl",
2026-06-21T23:42:58.0215459Z         "unit"
2026-06-21T23:42:58.0215540Z       ],
2026-06-21T23:42:58.0215623Z       "stages": {
2026-06-21T23:42:58.0215704Z         "doc": {
2026-06-21T23:42:58.0215798Z           "complete": false,
2026-06-21T23:42:58.0215884Z           "evidence": []
2026-06-21T23:42:58.0215971Z         },
2026-06-21T23:42:58.0216061Z         "impl": {
2026-06-21T23:42:58.0216141Z           "complete": true,
2026-06-21T23:42:58.0216230Z           "evidence": [
2026-06-21T23:42:58.0216303Z             {
2026-06-21T23:42:58.0216418Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T23:42:58.0216493Z               "line": 59
2026-06-21T23:42:58.0216579Z             },
2026-06-21T23:42:58.0216661Z             {
2026-06-21T23:42:58.0216765Z               "path": "crates/spt-term/src/pty.rs",
2026-06-21T23:42:58.0216855Z               "line": 234
2026-06-21T23:42:58.0216943Z             },
2026-06-21T23:42:58.0217023Z             {
2026-06-21T23:42:58.0217137Z               "path": "crates/spt-term/src/surface.rs",
2026-06-21T23:42:58.0217223Z               "line": 100
2026-06-21T23:42:58.0217309Z             }
2026-06-21T23:42:58.0217390Z           ]
2026-06-21T23:42:58.0217475Z         },
2026-06-21T23:42:58.0217557Z         "int": {
2026-06-21T23:42:58.0217653Z           "complete": false,
2026-06-21T23:42:58.0217738Z           "evidence": []
2026-06-21T23:42:58.0217823Z         },
2026-06-21T23:42:58.0217906Z         "unit": {
2026-06-21T23:42:58.0217986Z           "complete": true,
2026-06-21T23:42:58.0218076Z           "evidence": [
2026-06-21T23:42:58.0218158Z             {
2026-06-21T23:42:58.0218282Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-21T23:42:58.0218367Z               "line": 24
2026-06-21T23:42:58.0218452Z             },
2026-06-21T23:42:58.0218538Z             {
2026-06-21T23:42:58.0218637Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-21T23:42:58.0218731Z               "line": 56
2026-06-21T23:42:58.0218807Z             }
2026-06-21T23:42:58.0218893Z           ]
2026-06-21T23:42:58.0219041Z         }
2026-06-21T23:42:58.0219127Z       }
2026-06-21T23:42:58.0219213Z     },
2026-06-21T23:42:58.0219294Z     {
2026-06-21T23:42:58.0219475Z       "id": "REQ-TERM-2",
2026-06-21T23:42:58.0219651Z       "title": "session-surface abstraction; send-keys + send-line injection",
2026-06-21T23:42:58.0219751Z       "requiredStages": [
2026-06-21T23:42:58.0219833Z         "impl",
2026-06-21T23:42:58.0219914Z         "unit"
2026-06-21T23:42:58.0219995Z       ],
2026-06-21T23:42:58.0220071Z       "stages": {
2026-06-21T23:42:58.0220153Z         "doc": {
2026-06-21T23:42:58.0220238Z           "complete": false,
2026-06-21T23:42:58.0220324Z           "evidence": []
2026-06-21T23:42:58.0220405Z         },
2026-06-21T23:42:58.0220496Z         "impl": {
2026-06-21T23:42:58.0220590Z           "complete": true,
2026-06-21T23:42:58.0220764Z           "evidence": [
2026-06-21T23:42:58.0220854Z             {
2026-06-21T23:42:58.0220968Z               "path": "crates/spt-term/src/surface.rs",
2026-06-21T23:42:58.0221049Z               "line": 117
2026-06-21T23:42:58.0221135Z             },
2026-06-21T23:42:58.0221220Z             {
2026-06-21T23:42:58.0221333Z               "path": "crates/spt-term/src/surface.rs",
2026-06-21T23:42:58.0221420Z               "line": 127
2026-06-21T23:42:58.0221500Z             }
2026-06-21T23:42:58.0221584Z           ]
2026-06-21T23:42:58.0221660Z         },
2026-06-21T23:42:58.0221746Z         "int": {
2026-06-21T23:42:58.0221827Z           "complete": false,
2026-06-21T23:42:58.0221917Z           "evidence": []
2026-06-21T23:42:58.0221989Z         },
2026-06-21T23:42:58.0222066Z         "unit": {
2026-06-21T23:42:58.0222147Z           "complete": true,
2026-06-21T23:42:58.0222237Z           "evidence": [
2026-06-21T23:42:58.0222313Z             {
2026-06-21T23:42:58.0222424Z               "path": "crates/spt-term/tests/inject.rs",
2026-06-21T23:42:58.0222519Z               "line": 46
2026-06-21T23:42:58.0222594Z             },
2026-06-21T23:42:58.0222676Z             {
2026-06-21T23:42:58.0222791Z               "path": "crates/spt-term/tests/inject.rs",
2026-06-21T23:42:58.0222876Z               "line": 77
2026-06-21T23:42:58.0222957Z             }
2026-06-21T23:42:58.0223034Z           ]
2026-06-21T23:42:58.0223115Z         }
2026-06-21T23:42:58.0223196Z       }
2026-06-21T23:42:58.0223272Z     },
2026-06-21T23:42:58.0223349Z     {
2026-06-21T23:42:58.0223444Z       "id": "REQ-TERM-3",
2026-06-21T23:42:58.0223577Z       "title": "Byte-stream remote terminal streaming for v1",
2026-06-21T23:42:58.0223669Z       "requiredStages": [
2026-06-21T23:42:58.0223759Z         "impl",
2026-06-21T23:42:58.0223838Z         "unit"
2026-06-21T23:42:58.0223923Z       ],
2026-06-21T23:42:58.0224005Z       "stages": {
2026-06-21T23:42:58.0224090Z         "doc": {
2026-06-21T23:42:58.0224179Z           "complete": false,
2026-06-21T23:42:58.0224265Z           "evidence": []
2026-06-21T23:42:58.0224351Z         },
2026-06-21T23:42:58.0224433Z         "impl": {
2026-06-21T23:42:58.0224522Z           "complete": true,
2026-06-21T23:42:58.0224609Z           "evidence": [
2026-06-21T23:42:58.0224680Z             {
2026-06-21T23:42:58.0224789Z               "path": "crates/spt-term/src/stream.rs",
2026-06-21T23:42:58.0224884Z               "line": 71
2026-06-21T23:42:58.0224972Z             }
2026-06-21T23:42:58.0225052Z           ]
2026-06-21T23:42:58.0225137Z         },
2026-06-21T23:42:58.0225219Z         "int": {
2026-06-21T23:42:58.0225315Z           "complete": false,
2026-06-21T23:42:58.0225390Z           "evidence": []
2026-06-21T23:42:58.0225476Z         },
2026-06-21T23:42:58.0225558Z         "unit": {
2026-06-21T23:42:58.0225639Z           "complete": true,
2026-06-21T23:42:58.0225725Z           "evidence": [
2026-06-21T23:42:58.0225810Z             {
2026-06-21T23:42:58.0225916Z               "path": "crates/spt-term/tests/stream.rs",
2026-06-21T23:42:58.0226005Z               "line": 37
2026-06-21T23:42:58.0226091Z             },
2026-06-21T23:42:58.0226173Z             {
2026-06-21T23:42:58.0226288Z               "path": "crates/spt-term/tests/stream.rs",
2026-06-21T23:42:58.0226377Z               "line": 67
2026-06-21T23:42:58.0226454Z             }
2026-06-21T23:42:58.0226621Z           ]
2026-06-21T23:42:58.0226696Z         }
2026-06-21T23:42:58.0226781Z       }
2026-06-21T23:42:58.0226868Z     },
2026-06-21T23:42:58.0226950Z     {
2026-06-21T23:42:58.0227039Z       "id": "REQ-TERM-4",
2026-06-21T23:42:58.0227503Z       "title": "Live activity buffer (session digest): projection of normalized session logs, snapshot-pull (spt endpoint digest) + structured-delta-stream contract + api digest-entry push",
2026-06-21T23:42:58.0227602Z       "requiredStages": [
2026-06-21T23:42:58.0227682Z         "impl",
2026-06-21T23:42:58.0227774Z         "unit",
2026-06-21T23:42:58.0227860Z         "int"
2026-06-21T23:42:58.0228026Z       ],
2026-06-21T23:42:58.0228112Z       "stages": {
2026-06-21T23:42:58.0228194Z         "doc": {
2026-06-21T23:42:58.0228279Z           "complete": false,
2026-06-21T23:42:58.0228370Z           "evidence": []
2026-06-21T23:42:58.0228442Z         },
2026-06-21T23:42:58.0228527Z         "impl": {
2026-06-21T23:42:58.0228612Z           "complete": true,
2026-06-21T23:42:58.0228703Z           "evidence": [
2026-06-21T23:42:58.0228786Z             {
2026-06-21T23:42:58.0228903Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T23:42:58.0229050Z               "line": 37
2026-06-21T23:42:58.0229136Z             },
2026-06-21T23:42:58.0229216Z             {
2026-06-21T23:42:58.0229324Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T23:42:58.0229430Z               "line": 25
2026-06-21T23:42:58.0229511Z             },
2026-06-21T23:42:58.0229592Z             {
2026-06-21T23:42:58.0229710Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T23:42:58.0229797Z               "line": 114
2026-06-21T23:42:58.0229873Z             },
2026-06-21T23:42:58.0229949Z             {
2026-06-21T23:42:58.0230065Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T23:42:58.0230150Z               "line": 267
2026-06-21T23:42:58.0230235Z             },
2026-06-21T23:42:58.0230316Z             {
2026-06-21T23:42:58.0230427Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T23:42:58.0230512Z               "line": 289
2026-06-21T23:42:58.0230593Z             },
2026-06-21T23:42:58.0230674Z             {
2026-06-21T23:42:58.0230788Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T23:42:58.0230874Z               "line": 307
2026-06-21T23:42:58.0230955Z             },
2026-06-21T23:42:58.0231037Z             {
2026-06-21T23:42:58.0231155Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T23:42:58.0231237Z               "line": 33
2026-06-21T23:42:58.0231324Z             },
2026-06-21T23:42:58.0231400Z             {
2026-06-21T23:42:58.0231523Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T23:42:58.0231609Z               "line": 52
2026-06-21T23:42:58.0231681Z             },
2026-06-21T23:42:58.0231766Z             {
2026-06-21T23:42:58.0231884Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T23:42:58.0231975Z               "line": 180
2026-06-21T23:42:58.0232064Z             },
2026-06-21T23:42:58.0232144Z             {
2026-06-21T23:42:58.0232263Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T23:42:58.0232340Z               "line": 190
2026-06-21T23:42:58.0232421Z             },
2026-06-21T23:42:58.0232506Z             {
2026-06-21T23:42:58.0232626Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T23:42:58.0232703Z               "line": 250
2026-06-21T23:42:58.0232792Z             },
2026-06-21T23:42:58.0232863Z             {
2026-06-21T23:42:58.0232970Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:42:58.0233060Z               "line": 284
2026-06-21T23:42:58.0233145Z             },
2026-06-21T23:42:58.0233226Z             {
2026-06-21T23:42:58.0233327Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:42:58.0233418Z               "line": 295
2026-06-21T23:42:58.0233508Z             },
2026-06-21T23:42:58.0233689Z             {
2026-06-21T23:42:58.0233798Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0233881Z               "line": 1193
2026-06-21T23:42:58.0233967Z             }
2026-06-21T23:42:58.0234041Z           ]
2026-06-21T23:42:58.0234127Z         },
2026-06-21T23:42:58.0234215Z         "int": {
2026-06-21T23:42:58.0234305Z           "complete": true,
2026-06-21T23:42:58.0234389Z           "evidence": [
2026-06-21T23:42:58.0234474Z             {
2026-06-21T23:42:58.0234594Z               "path": "crates/spt-daemon/tests/digest.rs",
2026-06-21T23:42:58.0234673Z               "line": 18
2026-06-21T23:42:58.0234763Z             }
2026-06-21T23:42:58.0234940Z           ]
2026-06-21T23:42:58.0235021Z         },
2026-06-21T23:42:58.0235106Z         "unit": {
2026-06-21T23:42:58.0235188Z           "complete": true,
2026-06-21T23:42:58.0235273Z           "evidence": [
2026-06-21T23:42:58.0235350Z             {
2026-06-21T23:42:58.0235469Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T23:42:58.0235560Z               "line": 364
2026-06-21T23:42:58.0235646Z             },
2026-06-21T23:42:58.0235735Z             {
2026-06-21T23:42:58.0235851Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T23:42:58.0235941Z               "line": 416
2026-06-21T23:42:58.0236021Z             },
2026-06-21T23:42:58.0236113Z             {
2026-06-21T23:42:58.0236227Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T23:42:58.0236313Z               "line": 426
2026-06-21T23:42:58.0236394Z             },
2026-06-21T23:42:58.0236476Z             {
2026-06-21T23:42:58.0236598Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T23:42:58.0236694Z               "line": 436
2026-06-21T23:42:58.0236767Z             },
2026-06-21T23:42:58.0236857Z             {
2026-06-21T23:42:58.0236971Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T23:42:58.0237058Z               "line": 456
2026-06-21T23:42:58.0237139Z             },
2026-06-21T23:42:58.0237232Z             {
2026-06-21T23:42:58.0237355Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T23:42:58.0237437Z               "line": 478
2026-06-21T23:42:58.0237524Z             },
2026-06-21T23:42:58.0237608Z             {
2026-06-21T23:42:58.0237719Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T23:42:58.0237795Z               "line": 491
2026-06-21T23:42:58.0237876Z             },
2026-06-21T23:42:58.0237957Z             {
2026-06-21T23:42:58.0238077Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-21T23:42:58.0238157Z               "line": 502
2026-06-21T23:42:58.0238238Z             },
2026-06-21T23:42:58.0238319Z             {
2026-06-21T23:42:58.0238444Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T23:42:58.0238534Z               "line": 108
2026-06-21T23:42:58.0238620Z             },
2026-06-21T23:42:58.0238702Z             {
2026-06-21T23:42:58.0238820Z               "path": "crates/spt-term/src/digest.rs",
2026-06-21T23:42:58.0238906Z               "line": 119
2026-06-21T23:42:58.0239074Z             },
2026-06-21T23:42:58.0239153Z             {
2026-06-21T23:42:58.0239259Z               "path": "crates/spt-term/src/digest.rs",
2026-06-21T23:42:58.0239346Z               "line": 127
2026-06-21T23:42:58.0239431Z             },
2026-06-21T23:42:58.0239515Z             {
2026-06-21T23:42:58.0239634Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T23:42:58.0239729Z               "line": 474
2026-06-21T23:42:58.0239808Z             },
2026-06-21T23:42:58.0239893Z             {
2026-06-21T23:42:58.0240014Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T23:42:58.0240100Z               "line": 501
2026-06-21T23:42:58.0240185Z             },
2026-06-21T23:42:58.0240266Z             {
2026-06-21T23:42:58.0240386Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T23:42:58.0240471Z               "line": 520
2026-06-21T23:42:58.0240662Z             },
2026-06-21T23:42:58.0240748Z             {
2026-06-21T23:42:58.0240857Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T23:42:58.0240935Z               "line": 535
2026-06-21T23:42:58.0241020Z             },
2026-06-21T23:42:58.0241110Z             {
2026-06-21T23:42:58.0241273Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T23:42:58.0241358Z               "line": 561
2026-06-21T23:42:58.0241439Z             },
2026-06-21T23:42:58.0241515Z             {
2026-06-21T23:42:58.0241635Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T23:42:58.0241720Z               "line": 581
2026-06-21T23:42:58.0241908Z             },
2026-06-21T23:42:58.0241988Z             {
2026-06-21T23:42:58.0242097Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T23:42:58.0242184Z               "line": 591
2026-06-21T23:42:58.0242265Z             },
2026-06-21T23:42:58.0242345Z             {
2026-06-21T23:42:58.0242453Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T23:42:58.0242554Z               "line": 683
2026-06-21T23:42:58.0242629Z             },
2026-06-21T23:42:58.0242700Z             {
2026-06-21T23:42:58.0242823Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:42:58.0242905Z               "line": 885
2026-06-21T23:42:58.0242986Z             },
2026-06-21T23:42:58.0243075Z             {
2026-06-21T23:42:58.0243182Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0243272Z               "line": 9792
2026-06-21T23:42:58.0243348Z             }
2026-06-21T23:42:58.0243433Z           ]
2026-06-21T23:42:58.0243516Z         }
2026-06-21T23:42:58.0243601Z       }
2026-06-21T23:42:58.0243681Z     },
2026-06-21T23:42:58.0243763Z     {
2026-06-21T23:42:58.0243854Z       "id": "REQ-TERM-5",
2026-06-21T23:42:58.0245356Z       "title": "Adapter-declared digest extractor seam: a `[digest]` manifest section declaring an imperative extractor (native harness log -> the {role,text,tool,ts} contract; defaults to the [history] source files with an own-source escape hatch), `api digest-entry` push fallback, register-time validation of the section, adapter-declared presentation defaults (window depth, arg-truncation, sprint-collapse) that any consumer may override, and a `spt adapter digest-proof` author tool plus runtime skip-diagnostics (no silent drop). Reverses M9's no-manifest-seam stance; no declarative DSL.",
2026-06-21T23:42:58.0245462Z       "requiredStages": [
2026-06-21T23:42:58.0245553Z         "doc",
2026-06-21T23:42:58.0245623Z         "impl",
2026-06-21T23:42:58.0245704Z         "unit",
2026-06-21T23:42:58.0245787Z         "int"
2026-06-21T23:42:58.0245873Z       ],
2026-06-21T23:42:58.0245957Z       "stages": {
2026-06-21T23:42:58.0246039Z         "doc": {
2026-06-21T23:42:58.0246125Z           "complete": true,
2026-06-21T23:42:58.0246206Z           "evidence": [
2026-06-21T23:42:58.0246291Z             {
2026-06-21T23:42:58.0246392Z               "path": "docs/MANIFEST.md",
2026-06-21T23:42:58.0246491Z               "line": 234
2026-06-21T23:42:58.0246568Z             }
2026-06-21T23:42:58.0246654Z           ]
2026-06-21T23:42:58.0246736Z         },
2026-06-21T23:42:58.0246811Z         "impl": {
2026-06-21T23:42:58.0246906Z           "complete": true,
2026-06-21T23:42:58.0246983Z           "evidence": [
2026-06-21T23:42:58.0247074Z             {
2026-06-21T23:42:58.0247188Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T23:42:58.0247283Z               "line": 75
2026-06-21T23:42:58.0247370Z             },
2026-06-21T23:42:58.0247450Z             {
2026-06-21T23:42:58.0247564Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T23:42:58.0247652Z               "line": 131
2026-06-21T23:42:58.0247732Z             },
2026-06-21T23:42:58.0247816Z             {
2026-06-21T23:42:58.0247930Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T23:42:58.0248022Z               "line": 22
2026-06-21T23:42:58.0248099Z             },
2026-06-21T23:42:58.0248264Z             {
2026-06-21T23:42:58.0248360Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T23:42:58.0248446Z               "line": 87
2026-06-21T23:42:58.0248521Z             },
2026-06-21T23:42:58.0248599Z             {
2026-06-21T23:42:58.0248717Z               "path": "crates/spt-term/src/digest.rs",
2026-06-21T23:42:58.0248798Z               "line": 30
2026-06-21T23:42:58.0248884Z             },
2026-06-21T23:42:58.0249046Z             {
2026-06-21T23:42:58.0249170Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T23:42:58.0249257Z               "line": 103
2026-06-21T23:42:58.0249338Z             },
2026-06-21T23:42:58.0249518Z             {
2026-06-21T23:42:58.0249634Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T23:42:58.0249718Z               "line": 167
2026-06-21T23:42:58.0249799Z             },
2026-06-21T23:42:58.0249882Z             {
2026-06-21T23:42:58.0249991Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T23:42:58.0250071Z               "line": 434
2026-06-21T23:42:58.0250156Z             },
2026-06-21T23:42:58.0250237Z             {
2026-06-21T23:42:58.0250345Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0250426Z               "line": 5650
2026-06-21T23:42:58.0250516Z             },
2026-06-21T23:42:58.0250593Z             {
2026-06-21T23:42:58.0250702Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0250787Z               "line": 5957
2026-06-21T23:42:58.0250869Z             }
2026-06-21T23:42:58.0250946Z           ]
2026-06-21T23:42:58.0251026Z         },
2026-06-21T23:42:58.0251107Z         "int": {
2026-06-21T23:42:58.0251209Z           "complete": true,
2026-06-21T23:42:58.0251308Z           "evidence": [
2026-06-21T23:42:58.0251393Z             {
2026-06-21T23:42:58.0251538Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-21T23:42:58.0251633Z               "line": 17
2026-06-21T23:42:58.0251718Z             }
2026-06-21T23:42:58.0251804Z           ]
2026-06-21T23:42:58.0251890Z         },
2026-06-21T23:42:58.0251966Z         "unit": {
2026-06-21T23:42:58.0252057Z           "complete": true,
2026-06-21T23:42:58.0252139Z           "evidence": [
2026-06-21T23:42:58.0252233Z             {
2026-06-21T23:42:58.0252347Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T23:42:58.0252439Z               "line": 375
2026-06-21T23:42:58.0252520Z             },
2026-06-21T23:42:58.0252604Z             {
2026-06-21T23:42:58.0252710Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T23:42:58.0252802Z               "line": 162
2026-06-21T23:42:58.0252886Z             },
2026-06-21T23:42:58.0252967Z             {
2026-06-21T23:42:58.0253080Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T23:42:58.0253166Z               "line": 179
2026-06-21T23:42:58.0253250Z             },
2026-06-21T23:42:58.0253335Z             {
2026-06-21T23:42:58.0253441Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T23:42:58.0253527Z               "line": 201
2026-06-21T23:42:58.0253607Z             },
2026-06-21T23:42:58.0253693Z             {
2026-06-21T23:42:58.0253794Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T23:42:58.0253880Z               "line": 212
2026-06-21T23:42:58.0253965Z             },
2026-06-21T23:42:58.0254037Z             {
2026-06-21T23:42:58.0254142Z               "path": "crates/spt-live/src/digest.rs",
2026-06-21T23:42:58.0254223Z               "line": 223
2026-06-21T23:42:58.0254313Z             },
2026-06-21T23:42:58.0254400Z             {
2026-06-21T23:42:58.0254504Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:42:58.0254599Z               "line": 1525
2026-06-21T23:42:58.0254681Z             },
2026-06-21T23:42:58.0254767Z             {
2026-06-21T23:42:58.0254895Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:42:58.0254986Z               "line": 1568
2026-06-21T23:42:58.0255063Z             },
2026-06-21T23:42:58.0255267Z             {
2026-06-21T23:42:58.0255387Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T23:42:58.0255476Z               "line": 606
2026-06-21T23:42:58.0255557Z             },
2026-06-21T23:42:58.0255638Z             {
2026-06-21T23:42:58.0255756Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T23:42:58.0255836Z               "line": 634
2026-06-21T23:42:58.0255907Z             },
2026-06-21T23:42:58.0255994Z             {
2026-06-21T23:42:58.0256108Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T23:42:58.0256197Z               "line": 646
2026-06-21T23:42:58.0256361Z             },
2026-06-21T23:42:58.0256447Z             {
2026-06-21T23:42:58.0256560Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T23:42:58.0256642Z               "line": 669
2026-06-21T23:42:58.0256728Z             },
2026-06-21T23:42:58.0256799Z             {
2026-06-21T23:42:58.0256904Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0256990Z               "line": 8503
2026-06-21T23:42:58.0257080Z             },
2026-06-21T23:42:58.0257170Z             {
2026-06-21T23:42:58.0257258Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0257348Z               "line": 8561
2026-06-21T23:42:58.0257434Z             }
2026-06-21T23:42:58.0257514Z           ]
2026-06-21T23:42:58.0257596Z         }
2026-06-21T23:42:58.0257681Z       }
2026-06-21T23:42:58.0257767Z     },
2026-06-21T23:42:58.0257849Z     {
2026-06-21T23:42:58.0257940Z       "id": "REQ-TERM-6",
2026-06-21T23:42:58.0259149Z       "title": "Thread-spanning digest across session boundaries: a per-endpoint session ledger (`<perch>/sessions.log`) appended at first bind and by `api boundary` on `/clear`|`/compact` session rotation, the digest enumerating the last K sessions so its rolling window bridges a boundary, and a distinctive in-timeline boundary marker (DigestEntry::Boundary). The digest follows the live-agent thread, not a single session.",
2026-06-21T23:42:58.0259259Z       "requiredStages": [
2026-06-21T23:42:58.0259340Z         "impl",
2026-06-21T23:42:58.0259420Z         "unit",
2026-06-21T23:42:58.0259502Z         "int"
2026-06-21T23:42:58.0259583Z       ],
2026-06-21T23:42:58.0259674Z       "stages": {
2026-06-21T23:42:58.0259754Z         "doc": {
2026-06-21T23:42:58.0259846Z           "complete": false,
2026-06-21T23:42:58.0259940Z           "evidence": []
2026-06-21T23:42:58.0260030Z         },
2026-06-21T23:42:58.0260108Z         "impl": {
2026-06-21T23:42:58.0260194Z           "complete": true,
2026-06-21T23:42:58.0260278Z           "evidence": [
2026-06-21T23:42:58.0260364Z             {
2026-06-21T23:42:58.0260476Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T23:42:58.0260570Z               "line": 132
2026-06-21T23:42:58.0260655Z             },
2026-06-21T23:42:58.0260740Z             {
2026-06-21T23:42:58.0260855Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T23:42:58.0260933Z               "line": 187
2026-06-21T23:42:58.0261024Z             },
2026-06-21T23:42:58.0261105Z             {
2026-06-21T23:42:58.0261221Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T23:42:58.0261300Z               "line": 17
2026-06-21T23:42:58.0261377Z             },
2026-06-21T23:42:58.0261459Z             {
2026-06-21T23:42:58.0261568Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T23:42:58.0261648Z               "line": 104
2026-06-21T23:42:58.0261730Z             },
2026-06-21T23:42:58.0261816Z             {
2026-06-21T23:42:58.0261934Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T23:42:58.0262026Z               "line": 319
2026-06-21T23:42:58.0262103Z             },
2026-06-21T23:42:58.0262183Z             {
2026-06-21T23:42:58.0262302Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T23:42:58.0262384Z               "line": 396
2026-06-21T23:42:58.0262469Z             }
2026-06-21T23:42:58.0262550Z           ]
2026-06-21T23:42:58.0262737Z         },
2026-06-21T23:42:58.0262821Z         "int": {
2026-06-21T23:42:58.0262917Z           "complete": true,
2026-06-21T23:42:58.0262999Z           "evidence": [
2026-06-21T23:42:58.0263085Z             {
2026-06-21T23:42:58.0263237Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-21T23:42:58.0263323Z               "line": 18
2026-06-21T23:42:58.0263418Z             }
2026-06-21T23:42:58.0263498Z           ]
2026-06-21T23:42:58.0263578Z         },
2026-06-21T23:42:58.0263665Z         "unit": {
2026-06-21T23:42:58.0263745Z           "complete": true,
2026-06-21T23:42:58.0263829Z           "evidence": [
2026-06-21T23:42:58.0264006Z             {
2026-06-21T23:42:58.0264120Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T23:42:58.0264210Z               "line": 135
2026-06-21T23:42:58.0264282Z             },
2026-06-21T23:42:58.0264364Z             {
2026-06-21T23:42:58.0264477Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T23:42:58.0264573Z               "line": 150
2026-06-21T23:42:58.0264655Z             },
2026-06-21T23:42:58.0264736Z             {
2026-06-21T23:42:58.0264854Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T23:42:58.0264936Z               "line": 166
2026-06-21T23:42:58.0265021Z             },
2026-06-21T23:42:58.0265102Z             {
2026-06-21T23:42:58.0265217Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-21T23:42:58.0265303Z               "line": 257
2026-06-21T23:42:58.0265384Z             },
2026-06-21T23:42:58.0265465Z             {
2026-06-21T23:42:58.0265580Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T23:42:58.0265679Z               "line": 738
2026-06-21T23:42:58.0265760Z             },
2026-06-21T23:42:58.0265847Z             {
2026-06-21T23:42:58.0265966Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T23:42:58.0266056Z               "line": 759
2026-06-21T23:42:58.0266145Z             },
2026-06-21T23:42:58.0266232Z             {
2026-06-21T23:42:58.0266353Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-21T23:42:58.0266438Z               "line": 726
2026-06-21T23:42:58.0266529Z             }
2026-06-21T23:42:58.0266611Z           ]
2026-06-21T23:42:58.0266692Z         }
2026-06-21T23:42:58.0266777Z       }
2026-06-21T23:42:58.0266859Z     },
2026-06-21T23:42:58.0266945Z     {
2026-06-21T23:42:58.0267035Z       "id": "REQ-TERM-7",
2026-06-21T23:42:58.0268303Z       "title": "Two-origin digest merge: spt-owned context-injection entries (psyche_download | echo_mirror | owl_message) appended by spt to the endpoint `digest.log`, timestamp-interleaved with the adapter's extracted activity records into one ordered timeline, via a distinct context-injection record category. Data model only this milestone; GUI collapse/expand and the echo-reads-digest delta loop are deferred to the surfaces that consume them.",
2026-06-21T23:42:58.0268414Z       "requiredStages": [
2026-06-21T23:42:58.0268500Z         "impl",
2026-06-21T23:42:58.0268589Z         "unit",
2026-06-21T23:42:58.0268671Z         "int"
2026-06-21T23:42:58.0268748Z       ],
2026-06-21T23:42:58.0268834Z       "stages": {
2026-06-21T23:42:58.0268922Z         "doc": {
2026-06-21T23:42:58.0269108Z           "complete": false,
2026-06-21T23:42:58.0269190Z           "evidence": []
2026-06-21T23:42:58.0269280Z         },
2026-06-21T23:42:58.0269361Z         "impl": {
2026-06-21T23:42:58.0269476Z           "complete": true,
2026-06-21T23:42:58.0269562Z           "evidence": [
2026-06-21T23:42:58.0272677Z             {
2026-06-21T23:42:58.0272814Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T23:42:58.0272910Z               "line": 133
2026-06-21T23:42:58.0272992Z             },
2026-06-21T23:42:58.0273072Z             {
2026-06-21T23:42:58.0273196Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T23:42:58.0273278Z               "line": 326
2026-06-21T23:42:58.0273363Z             },
2026-06-21T23:42:58.0273573Z             {
2026-06-21T23:42:58.0273692Z               "path": "crates/spt-live/src/inject.rs",
2026-06-21T23:42:58.0273782Z               "line": 15
2026-06-21T23:42:58.0273874Z             },
2026-06-21T23:42:58.0273951Z             {
2026-06-21T23:42:58.0274053Z               "path": "crates/spt-live/src/inject.rs",
2026-06-21T23:42:58.0274148Z               "line": 32
2026-06-21T23:42:58.0274234Z             },
2026-06-21T23:42:58.0274315Z             {
2026-06-21T23:42:58.0274422Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T23:42:58.0274509Z               "line": 49
2026-06-21T23:42:58.0274586Z             },
2026-06-21T23:42:58.0274761Z             {
2026-06-21T23:42:58.0274886Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T23:42:58.0274972Z               "line": 286
2026-06-21T23:42:58.0275052Z             },
2026-06-21T23:42:58.0275133Z             {
2026-06-21T23:42:58.0275253Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T23:42:58.0275338Z               "line": 320
2026-06-21T23:42:58.0275424Z             }
2026-06-21T23:42:58.0275501Z           ]
2026-06-21T23:42:58.0275581Z         },
2026-06-21T23:42:58.0275662Z         "int": {
2026-06-21T23:42:58.0275757Z           "complete": true,
2026-06-21T23:42:58.0275850Z           "evidence": [
2026-06-21T23:42:58.0275934Z             {
2026-06-21T23:42:58.0276087Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-21T23:42:58.0276174Z               "line": 19
2026-06-21T23:42:58.0276263Z             }
2026-06-21T23:42:58.0276344Z           ]
2026-06-21T23:42:58.0276427Z         },
2026-06-21T23:42:58.0276517Z         "unit": {
2026-06-21T23:42:58.0276606Z           "complete": true,
2026-06-21T23:42:58.0276695Z           "evidence": [
2026-06-21T23:42:58.0276777Z             {
2026-06-21T23:42:58.0276890Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T23:42:58.0276975Z               "line": 455
2026-06-21T23:42:58.0277066Z             },
2026-06-21T23:42:58.0277147Z             {
2026-06-21T23:42:58.0277261Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-21T23:42:58.0277346Z               "line": 568
2026-06-21T23:42:58.0277424Z             },
2026-06-21T23:42:58.0277505Z             {
2026-06-21T23:42:58.0277609Z               "path": "crates/spt-live/src/inject.rs",
2026-06-21T23:42:58.0277705Z               "line": 58
2026-06-21T23:42:58.0277781Z             },
2026-06-21T23:42:58.0277867Z             {
2026-06-21T23:42:58.0277976Z               "path": "crates/spt-live/src/inject.rs",
2026-06-21T23:42:58.0278059Z               "line": 77
2026-06-21T23:42:58.0278148Z             },
2026-06-21T23:42:58.0278229Z             {
2026-06-21T23:42:58.0278344Z               "path": "crates/spt-live/src/inject.rs",
2026-06-21T23:42:58.0278425Z               "line": 87
2026-06-21T23:42:58.0278496Z             },
2026-06-21T23:42:58.0278582Z             {
2026-06-21T23:42:58.0278688Z               "path": "crates/spt-store/src/history.rs",
2026-06-21T23:42:58.0278778Z               "line": 94
2026-06-21T23:42:58.0278858Z             },
2026-06-21T23:42:58.0279027Z             {
2026-06-21T23:42:58.0279144Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T23:42:58.0279236Z               "line": 691
2026-06-21T23:42:58.0279317Z             },
2026-06-21T23:42:58.0279398Z             {
2026-06-21T23:42:58.0279516Z               "path": "crates/spt-term/src/projection.rs",
2026-06-21T23:42:58.0279601Z               "line": 716
2026-06-21T23:42:58.0279678Z             }
2026-06-21T23:42:58.0279760Z           ]
2026-06-21T23:42:58.0279840Z         }
2026-06-21T23:42:58.0279935Z       }
2026-06-21T23:42:58.0280017Z     },
2026-06-21T23:42:58.0280098Z     {
2026-06-21T23:42:58.0280178Z       "id": "REQ-UPD-1",
2026-06-21T23:42:58.0280308Z       "title": "Peer-propagated update over P2P",
2026-06-21T23:42:58.0280398Z       "requiredStages": [
2026-06-21T23:42:58.0280479Z         "impl",
2026-06-21T23:42:58.0280789Z         "unit",
2026-06-21T23:42:58.0280869Z         "int"
2026-06-21T23:42:58.0280957Z       ],
2026-06-21T23:42:58.0281042Z       "stages": {
2026-06-21T23:42:58.0281123Z         "doc": {
2026-06-21T23:42:58.0281214Z           "complete": false,
2026-06-21T23:42:58.0281290Z           "evidence": []
2026-06-21T23:42:58.0281375Z         },
2026-06-21T23:42:58.0281456Z         "impl": {
2026-06-21T23:42:58.0281542Z           "complete": true,
2026-06-21T23:42:58.0281629Z           "evidence": [
2026-06-21T23:42:58.0281714Z             {
2026-06-21T23:42:58.0281837Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T23:42:58.0282012Z               "line": 28
2026-06-21T23:42:58.0282096Z             },
2026-06-21T23:42:58.0282172Z             {
2026-06-21T23:42:58.0282293Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T23:42:58.0282374Z               "line": 103
2026-06-21T23:42:58.0282449Z             },
2026-06-21T23:42:58.0282516Z             {
2026-06-21T23:42:58.0282645Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T23:42:58.0282726Z               "line": 342
2026-06-21T23:42:58.0282797Z             },
2026-06-21T23:42:58.0282870Z             {
2026-06-21T23:42:58.0282984Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T23:42:58.0283073Z               "line": 22
2026-06-21T23:42:58.0283151Z             },
2026-06-21T23:42:58.0283237Z             {
2026-06-21T23:42:58.0283356Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T23:42:58.0283437Z               "line": 207
2026-06-21T23:42:58.0283518Z             },
2026-06-21T23:42:58.0283585Z             {
2026-06-21T23:42:58.0283703Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T23:42:58.0283785Z               "line": 283
2026-06-21T23:42:58.0283872Z             },
2026-06-21T23:42:58.0283956Z             {
2026-06-21T23:42:58.0284066Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T23:42:58.0284163Z               "line": 340
2026-06-21T23:42:58.0284243Z             },
2026-06-21T23:42:58.0284319Z             {
2026-06-21T23:42:58.0284434Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T23:42:58.0284520Z               "line": 37
2026-06-21T23:42:58.0284599Z             }
2026-06-21T23:42:58.0284671Z           ]
2026-06-21T23:42:58.0284752Z         },
2026-06-21T23:42:58.0284823Z         "int": {
2026-06-21T23:42:58.0284921Z           "complete": true,
2026-06-21T23:42:58.0285002Z           "evidence": [
2026-06-21T23:42:58.0285083Z             {
2026-06-21T23:42:58.0285213Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-21T23:42:58.0285307Z               "line": 207
2026-06-21T23:42:58.0285393Z             },
2026-06-21T23:42:58.0285470Z             {
2026-06-21T23:42:58.0285588Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-21T23:42:58.0285669Z               "line": 1082
2026-06-21T23:42:58.0285747Z             }
2026-06-21T23:42:58.0285836Z           ]
2026-06-21T23:42:58.0285917Z         },
2026-06-21T23:42:58.0286003Z         "unit": {
2026-06-21T23:42:58.0286095Z           "complete": true,
2026-06-21T23:42:58.0286194Z           "evidence": [
2026-06-21T23:42:58.0286289Z             {
2026-06-21T23:42:58.0286410Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T23:42:58.0286499Z               "line": 490
2026-06-21T23:42:58.0286580Z             },
2026-06-21T23:42:58.0286662Z             {
2026-06-21T23:42:58.0286772Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T23:42:58.0286856Z               "line": 616
2026-06-21T23:42:58.0286938Z             },
2026-06-21T23:42:58.0287020Z             {
2026-06-21T23:42:58.0287156Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T23:42:58.0287237Z               "line": 277
2026-06-21T23:42:58.0287323Z             },
2026-06-21T23:42:58.0287404Z             {
2026-06-21T23:42:58.0287516Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T23:42:58.0287712Z               "line": 124
2026-06-21T23:42:58.0287793Z             },
2026-06-21T23:42:58.0287874Z             {
2026-06-21T23:42:58.0287989Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T23:42:58.0288074Z               "line": 200
2026-06-21T23:42:58.0288150Z             }
2026-06-21T23:42:58.0288236Z           ]
2026-06-21T23:42:58.0288318Z         }
2026-06-21T23:42:58.0288403Z       }
2026-06-21T23:42:58.0288484Z     },
2026-06-21T23:42:58.0288560Z     {
2026-06-21T23:42:58.0288657Z       "id": "REQ-UPD-2",
2026-06-21T23:42:58.0288799Z       "title": "All binaries signature-verified before handoff",
2026-06-21T23:42:58.0289042Z       "requiredStages": [
2026-06-21T23:42:58.0289132Z         "impl",
2026-06-21T23:42:58.0289199Z         "unit"
2026-06-21T23:42:58.0289287Z       ],
2026-06-21T23:42:58.0289356Z       "stages": {
2026-06-21T23:42:58.0289443Z         "doc": {
2026-06-21T23:42:58.0289534Z           "complete": false,
2026-06-21T23:42:58.0289616Z           "evidence": []
2026-06-21T23:42:58.0289695Z         },
2026-06-21T23:42:58.0289776Z         "impl": {
2026-06-21T23:42:58.0289859Z           "complete": true,
2026-06-21T23:42:58.0289945Z           "evidence": [
2026-06-21T23:42:58.0290028Z             {
2026-06-21T23:42:58.0290132Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T23:42:58.0290219Z               "line": 343
2026-06-21T23:42:58.0290301Z             },
2026-06-21T23:42:58.0290376Z             {
2026-06-21T23:42:58.0290500Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T23:42:58.0290577Z               "line": 476
2026-06-21T23:42:58.0290668Z             },
2026-06-21T23:42:58.0290743Z             {
2026-06-21T23:42:58.0290849Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:42:58.0290939Z               "line": 29
2026-06-21T23:42:58.0291020Z             },
2026-06-21T23:42:58.0291100Z             {
2026-06-21T23:42:58.0291221Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:42:58.0291311Z               "line": 271
2026-06-21T23:42:58.0291392Z             },
2026-06-21T23:42:58.0291468Z             {
2026-06-21T23:42:58.0291588Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:42:58.0291664Z               "line": 288
2026-06-21T23:42:58.0291739Z             },
2026-06-21T23:42:58.0291813Z             {
2026-06-21T23:42:58.0291917Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:42:58.0292002Z               "line": 408
2026-06-21T23:42:58.0292088Z             },
2026-06-21T23:42:58.0292170Z             {
2026-06-21T23:42:58.0292274Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:42:58.0292363Z               "line": 558
2026-06-21T23:42:58.0292440Z             },
2026-06-21T23:42:58.0292521Z             {
2026-06-21T23:42:58.0292629Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T23:42:58.0292718Z               "line": 155
2026-06-21T23:42:58.0292805Z             }
2026-06-21T23:42:58.0292877Z           ]
2026-06-21T23:42:58.0292962Z         },
2026-06-21T23:42:58.0293043Z         "int": {
2026-06-21T23:42:58.0293129Z           "complete": false,
2026-06-21T23:42:58.0293215Z           "evidence": []
2026-06-21T23:42:58.0293305Z         },
2026-06-21T23:42:58.0293391Z         "unit": {
2026-06-21T23:42:58.0293478Z           "complete": true,
2026-06-21T23:42:58.0293563Z           "evidence": [
2026-06-21T23:42:58.0293643Z             {
2026-06-21T23:42:58.0293759Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:42:58.0293840Z               "line": 750
2026-06-21T23:42:58.0293921Z             },
2026-06-21T23:42:58.0293997Z             {
2026-06-21T23:42:58.0294107Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:42:58.0294197Z               "line": 811
2026-06-21T23:42:58.0294273Z             },
2026-06-21T23:42:58.0294355Z             {
2026-06-21T23:42:58.0294469Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:42:58.0294655Z               "line": 825
2026-06-21T23:42:58.0294732Z             },
2026-06-21T23:42:58.0294807Z             {
2026-06-21T23:42:58.0294921Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:42:58.0295004Z               "line": 841
2026-06-21T23:42:58.0295080Z             },
2026-06-21T23:42:58.0295160Z             {
2026-06-21T23:42:58.0295269Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:42:58.0295350Z               "line": 932
2026-06-21T23:42:58.0295435Z             },
2026-06-21T23:42:58.0295514Z             {
2026-06-21T23:42:58.0295624Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T23:42:58.0295810Z               "line": 414
2026-06-21T23:42:58.0295886Z             },
2026-06-21T23:42:58.0295968Z             {
2026-06-21T23:42:58.0296082Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T23:42:58.0296163Z               "line": 427
2026-06-21T23:42:58.0296244Z             },
2026-06-21T23:42:58.0296326Z             {
2026-06-21T23:42:58.0296454Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T23:42:58.0296539Z               "line": 410
2026-06-21T23:42:58.0296617Z             }
2026-06-21T23:42:58.0296702Z           ]
2026-06-21T23:42:58.0296779Z         }
2026-06-21T23:42:58.0296864Z       }
2026-06-21T23:42:58.0296941Z     },
2026-06-21T23:42:58.0297027Z     {
2026-06-21T23:42:58.0297112Z       "id": "REQ-UPD-3",
2026-06-21T23:42:58.0297280Z       "title": "No endpoint process terminates/suspends during self-update",
2026-06-21T23:42:58.0297369Z       "requiredStages": [
2026-06-21T23:42:58.0297455Z         "impl",
2026-06-21T23:42:58.0297542Z         "unit",
2026-06-21T23:42:58.0297623Z         "int"
2026-06-21T23:42:58.0297707Z       ],
2026-06-21T23:42:58.0297788Z       "stages": {
2026-06-21T23:42:58.0297869Z         "doc": {
2026-06-21T23:42:58.0297950Z           "complete": false,
2026-06-21T23:42:58.0298034Z           "evidence": []
2026-06-21T23:42:58.0298124Z         },
2026-06-21T23:42:58.0298205Z         "impl": {
2026-06-21T23:42:58.0298296Z           "complete": true,
2026-06-21T23:42:58.0298381Z           "evidence": [
2026-06-21T23:42:58.0298458Z             {
2026-06-21T23:42:58.0298583Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T23:42:58.0298664Z               "line": 40
2026-06-21T23:42:58.0298748Z             },
2026-06-21T23:42:58.0298825Z             {
2026-06-21T23:42:58.0299011Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T23:42:58.0299096Z               "line": 87
2026-06-21T23:42:58.0299179Z             },
2026-06-21T23:42:58.0299268Z             {
2026-06-21T23:42:58.0299382Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T23:42:58.0299474Z               "line": 1136
2026-06-21T23:42:58.0299556Z             },
2026-06-21T23:42:58.0299636Z             {
2026-06-21T23:42:58.0299741Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:42:58.0299832Z               "line": 2094
2026-06-21T23:42:58.0299917Z             },
2026-06-21T23:42:58.0299989Z             {
2026-06-21T23:42:58.0300094Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T23:42:58.0300181Z               "line": 26
2026-06-21T23:42:58.0300264Z             },
2026-06-21T23:42:58.0300346Z             {
2026-06-21T23:42:58.0300447Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T23:42:58.0300528Z               "line": 114
2026-06-21T23:42:58.0300598Z             },
2026-06-21T23:42:58.0300688Z             {
2026-06-21T23:42:58.0300794Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T23:42:58.0300885Z               "line": 246
2026-06-21T23:42:58.0300969Z             },
2026-06-21T23:42:58.0301050Z             {
2026-06-21T23:42:58.0301147Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0301232Z               "line": 2442
2026-06-21T23:42:58.0301318Z             }
2026-06-21T23:42:58.0301504Z           ]
2026-06-21T23:42:58.0301585Z         },
2026-06-21T23:42:58.0301670Z         "int": {
2026-06-21T23:42:58.0301762Z           "complete": true,
2026-06-21T23:42:58.0301847Z           "evidence": [
2026-06-21T23:42:58.0301928Z             {
2026-06-21T23:42:58.0302048Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-21T23:42:58.0302129Z               "line": 58
2026-06-21T23:42:58.0302214Z             }
2026-06-21T23:42:58.0302291Z           ]
2026-06-21T23:42:58.0302373Z         },
2026-06-21T23:42:58.0302458Z         "unit": {
2026-06-21T23:42:58.0302543Z           "complete": true,
2026-06-21T23:42:58.0302629Z           "evidence": [
2026-06-21T23:42:58.0302810Z             {
2026-06-21T23:42:58.0302919Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T23:42:58.0303000Z               "line": 532
2026-06-21T23:42:58.0303085Z             },
2026-06-21T23:42:58.0303160Z             {
2026-06-21T23:42:58.0303269Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T23:42:58.0303361Z               "line": 585
2026-06-21T23:42:58.0303447Z             },
2026-06-21T23:42:58.0303527Z             {
2026-06-21T23:42:58.0303636Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T23:42:58.0303714Z               "line": 653
2026-06-21T23:42:58.0303799Z             },
2026-06-21T23:42:58.0303879Z             {
2026-06-21T23:42:58.0304000Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-21T23:42:58.0304085Z               "line": 1102
2026-06-21T23:42:58.0304166Z             },
2026-06-21T23:42:58.0304252Z             {
2026-06-21T23:42:58.0304362Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T23:42:58.0304457Z               "line": 271
2026-06-21T23:42:58.0304537Z             },
2026-06-21T23:42:58.0304620Z             {
2026-06-21T23:42:58.0304733Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T23:42:58.0304814Z               "line": 295
2026-06-21T23:42:58.0304896Z             },
2026-06-21T23:42:58.0304982Z             {
2026-06-21T23:42:58.0305095Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T23:42:58.0305181Z               "line": 316
2026-06-21T23:42:58.0305269Z             },
2026-06-21T23:42:58.0305349Z             {
2026-06-21T23:42:58.0305454Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T23:42:58.0305540Z               "line": 332
2026-06-21T23:42:58.0305612Z             }
2026-06-21T23:42:58.0305692Z           ]
2026-06-21T23:42:58.0305776Z         }
2026-06-21T23:42:58.0305862Z       }
2026-06-21T23:42:58.0305943Z     },
2026-06-21T23:42:58.0306023Z     {
2026-06-21T23:42:58.0306122Z       "id": "REQ-UPD-4",
2026-06-21T23:42:58.0306299Z       "title": "Update gated on user confirmation by default; opt-in full-auto",
2026-06-21T23:42:58.0306399Z       "requiredStages": [
2026-06-21T23:42:58.0306480Z         "impl",
2026-06-21T23:42:58.0306566Z         "unit"
2026-06-21T23:42:58.0306652Z       ],
2026-06-21T23:42:58.0306732Z       "stages": {
2026-06-21T23:42:58.0306818Z         "doc": {
2026-06-21T23:42:58.0306905Z           "complete": false,
2026-06-21T23:42:58.0306986Z           "evidence": []
2026-06-21T23:42:58.0307071Z         },
2026-06-21T23:42:58.0307152Z         "impl": {
2026-06-21T23:42:58.0307234Z           "complete": true,
2026-06-21T23:42:58.0307324Z           "evidence": [
2026-06-21T23:42:58.0307404Z             {
2026-06-21T23:42:58.0307515Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T23:42:58.0307610Z               "line": 41
2026-06-21T23:42:58.0307691Z             },
2026-06-21T23:42:58.0307777Z             {
2026-06-21T23:42:58.0307897Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T23:42:58.0307981Z               "line": 88
2026-06-21T23:42:58.0308058Z             },
2026-06-21T23:42:58.0308141Z             {
2026-06-21T23:42:58.0308259Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T23:42:58.0308343Z               "line": 23
2026-06-21T23:42:58.0308524Z             },
2026-06-21T23:42:58.0308604Z             {
2026-06-21T23:42:58.0308717Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T23:42:58.0308803Z               "line": 56
2026-06-21T23:42:58.0308881Z             },
2026-06-21T23:42:58.0309041Z             {
2026-06-21T23:42:58.0309143Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T23:42:58.0309229Z               "line": 77
2026-06-21T23:42:58.0309313Z             },
2026-06-21T23:42:58.0309385Z             {
2026-06-21T23:42:58.0309519Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-21T23:42:58.0309604Z               "line": 236
2026-06-21T23:42:58.0309805Z             },
2026-06-21T23:42:58.0309886Z             {
2026-06-21T23:42:58.0310000Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-21T23:42:58.0310092Z               "line": 108
2026-06-21T23:42:58.0310172Z             },
2026-06-21T23:42:58.0310248Z             {
2026-06-21T23:42:58.0310359Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T23:42:58.0310445Z               "line": 270
2026-06-21T23:42:58.0310529Z             },
2026-06-21T23:42:58.0310596Z             {
2026-06-21T23:42:58.0310707Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0310792Z               "line": 2441
2026-06-21T23:42:58.0310878Z             }
2026-06-21T23:42:58.0310954Z           ]
2026-06-21T23:42:58.0311031Z         },
2026-06-21T23:42:58.0311116Z         "int": {
2026-06-21T23:42:58.0311206Z           "complete": false,
2026-06-21T23:42:58.0311301Z           "evidence": []
2026-06-21T23:42:58.0311383Z         },
2026-06-21T23:42:58.0311478Z         "unit": {
2026-06-21T23:42:58.0311558Z           "complete": true,
2026-06-21T23:42:58.0311654Z           "evidence": [
2026-06-21T23:42:58.0311721Z             {
2026-06-21T23:42:58.0311834Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T23:42:58.0311925Z               "line": 581
2026-06-21T23:42:58.0312013Z             },
2026-06-21T23:42:58.0312093Z             {
2026-06-21T23:42:58.0312202Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T23:42:58.0312288Z               "line": 706
2026-06-21T23:42:58.0312374Z             },
2026-06-21T23:42:58.0312455Z             {
2026-06-21T23:42:58.0312559Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-21T23:42:58.0312642Z               "line": 384
2026-06-21T23:42:58.0312726Z             },
2026-06-21T23:42:58.0312803Z             {
2026-06-21T23:42:58.0312918Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T23:42:58.0312999Z               "line": 102
2026-06-21T23:42:58.0313089Z             },
2026-06-21T23:42:58.0313175Z             {
2026-06-21T23:42:58.0313286Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T23:42:58.0313374Z               "line": 123
2026-06-21T23:42:58.0313456Z             },
2026-06-21T23:42:58.0313536Z             {
2026-06-21T23:42:58.0313650Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-21T23:42:58.0313734Z               "line": 142
2026-06-21T23:42:58.0313819Z             },
2026-06-21T23:42:58.0313901Z             {
2026-06-21T23:42:58.0314002Z               "path": "crates/spt-store/src/info.rs",
2026-06-21T23:42:58.0314087Z               "line": 582
2026-06-21T23:42:58.0314173Z             },
2026-06-21T23:42:58.0314254Z             {
2026-06-21T23:42:58.0314359Z               "path": "crates/spt-store/src/perch.rs",
2026-06-21T23:42:58.0314449Z               "line": 566
2026-06-21T23:42:58.0314531Z             },
2026-06-21T23:42:58.0314612Z             {
2026-06-21T23:42:58.0314711Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0314812Z               "line": 8256
2026-06-21T23:42:58.0314898Z             }
2026-06-21T23:42:58.0314970Z           ]
2026-06-21T23:42:58.0315050Z         }
2026-06-21T23:42:58.0315131Z       }
2026-06-21T23:42:58.0315218Z     },
2026-06-21T23:42:58.0315293Z     {
2026-06-21T23:42:58.0315485Z       "id": "REQ-UPD-5",
2026-06-21T23:42:58.0315622Z       "title": "spt-core ripple-updates registered adapters",
2026-06-21T23:42:58.0315708Z       "requiredStages": [
2026-06-21T23:42:58.0315800Z         "impl",
2026-06-21T23:42:58.0315881Z         "unit"
2026-06-21T23:42:58.0315965Z       ],
2026-06-21T23:42:58.0316047Z       "stages": {
2026-06-21T23:42:58.0316129Z         "doc": {
2026-06-21T23:42:58.0316219Z           "complete": false,
2026-06-21T23:42:58.0316308Z           "evidence": []
2026-06-21T23:42:58.0316398Z         },
2026-06-21T23:42:58.0316485Z         "impl": {
2026-06-21T23:42:58.0316587Z           "complete": true,
2026-06-21T23:42:58.0316744Z           "evidence": [
2026-06-21T23:42:58.0316836Z             {
2026-06-21T23:42:58.0316978Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T23:42:58.0317064Z               "line": 27
2026-06-21T23:42:58.0317155Z             },
2026-06-21T23:42:58.0317236Z             {
2026-06-21T23:42:58.0317369Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T23:42:58.0317451Z               "line": 87
2026-06-21T23:42:58.0317536Z             },
2026-06-21T23:42:58.0317617Z             {
2026-06-21T23:42:58.0317732Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T23:42:58.0317818Z               "line": 145
2026-06-21T23:42:58.0317903Z             },
2026-06-21T23:42:58.0317984Z             {
2026-06-21T23:42:58.0318109Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:42:58.0318189Z               "line": 492
2026-06-21T23:42:58.0318275Z             },
2026-06-21T23:42:58.0318352Z             {
2026-06-21T23:42:58.0318480Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:42:58.0318566Z               "line": 546
2026-06-21T23:42:58.0318652Z             }
2026-06-21T23:42:58.0318743Z           ]
2026-06-21T23:42:58.0318837Z         },
2026-06-21T23:42:58.0318922Z         "int": {
2026-06-21T23:42:58.0319103Z           "complete": false,
2026-06-21T23:42:58.0319197Z           "evidence": []
2026-06-21T23:42:58.0319277Z         },
2026-06-21T23:42:58.0319368Z         "unit": {
2026-06-21T23:42:58.0319455Z           "complete": true,
2026-06-21T23:42:58.0319549Z           "evidence": [
2026-06-21T23:42:58.0319630Z             {
2026-06-21T23:42:58.0319755Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T23:42:58.0319840Z               "line": 272
2026-06-21T23:42:58.0319912Z             },
2026-06-21T23:42:58.0319998Z             {
2026-06-21T23:42:58.0320113Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T23:42:58.0320197Z               "line": 286
2026-06-21T23:42:58.0320280Z             },
2026-06-21T23:42:58.0320361Z             {
2026-06-21T23:42:58.0320489Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T23:42:58.0320565Z               "line": 300
2026-06-21T23:42:58.0320647Z             },
2026-06-21T23:42:58.0320737Z             {
2026-06-21T23:42:58.0320851Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T23:42:58.0320934Z               "line": 314
2026-06-21T23:42:58.0321019Z             },
2026-06-21T23:42:58.0321104Z             {
2026-06-21T23:42:58.0321224Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T23:42:58.0321320Z               "line": 348
2026-06-21T23:42:58.0321404Z             },
2026-06-21T23:42:58.0321476Z             {
2026-06-21T23:42:58.0321606Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:42:58.0321691Z               "line": 1071
2026-06-21T23:42:58.0321775Z             }
2026-06-21T23:42:58.0321861Z           ]
2026-06-21T23:42:58.0321948Z         }
2026-06-21T23:42:58.0322034Z       }
2026-06-21T23:42:58.0322113Z     },
2026-06-21T23:42:58.0322200Z     {
2026-06-21T23:42:58.0322286Z       "id": "REQ-UPD-6",
2026-06-21T23:42:58.0323106Z       "title": "Platform-targeted update sets and debug rollout: signed multi-platform update metadata, recipient platform selection, channel-scoped monotonic counters, debug-channel opt-in via release-key overlay, local staging plus pull-based peer propagation, and maintainer-only convergence tooling (ADR-0016)",
2026-06-21T23:42:58.0323315Z       "requiredStages": [
2026-06-21T23:42:58.0323401Z         "doc",
2026-06-21T23:42:58.0323483Z         "impl",
2026-06-21T23:42:58.0323564Z         "unit",
2026-06-21T23:42:58.0323644Z         "int"
2026-06-21T23:42:58.0323725Z       ],
2026-06-21T23:42:58.0323808Z       "stages": {
2026-06-21T23:42:58.0323889Z         "doc": {
2026-06-21T23:42:58.0323987Z           "complete": true,
2026-06-21T23:42:58.0324077Z           "evidence": [
2026-06-21T23:42:58.0324252Z             {
2026-06-21T23:42:58.0324389Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-21T23:42:58.0324476Z               "line": 3
2026-06-21T23:42:58.0324558Z             },
2026-06-21T23:42:58.0324642Z             {
2026-06-21T23:42:58.0324747Z               "path": "docs/DEBUG-ROLLOUT.md",
2026-06-21T23:42:58.0324843Z               "line": 3
2026-06-21T23:42:58.0324924Z             },
2026-06-21T23:42:58.0325014Z             {
2026-06-21T23:42:58.0325163Z               "path": "docs/adr/0016-platform-targeted-update-sets.md",
2026-06-21T23:42:58.0325257Z               "line": 3
2026-06-21T23:42:58.0325348Z             }
2026-06-21T23:42:58.0325425Z           ]
2026-06-21T23:42:58.0325510Z         },
2026-06-21T23:42:58.0325596Z         "impl": {
2026-06-21T23:42:58.0325701Z           "complete": true,
2026-06-21T23:42:58.0325783Z           "evidence": [
2026-06-21T23:42:58.0325868Z             {
2026-06-21T23:42:58.0325991Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T23:42:58.0326084Z               "line": 76
2026-06-21T23:42:58.0326168Z             },
2026-06-21T23:42:58.0326245Z             {
2026-06-21T23:42:58.0326370Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T23:42:58.0326445Z               "line": 212
2026-06-21T23:42:58.0326535Z             },
2026-06-21T23:42:58.0326626Z             {
2026-06-21T23:42:58.0326746Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T23:42:58.0326835Z               "line": 69
2026-06-21T23:42:58.0326920Z             },
2026-06-21T23:42:58.0327006Z             {
2026-06-21T23:42:58.0327119Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T23:42:58.0327214Z               "line": 133
2026-06-21T23:42:58.0327305Z             },
2026-06-21T23:42:58.0327386Z             {
2026-06-21T23:42:58.0327500Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T23:42:58.0327580Z               "line": 243
2026-06-21T23:42:58.0327668Z             },
2026-06-21T23:42:58.0327748Z             {
2026-06-21T23:42:58.0327867Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T23:42:58.0327948Z               "line": 406
2026-06-21T23:42:58.0328030Z             },
2026-06-21T23:42:58.0328120Z             {
2026-06-21T23:42:58.0328234Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T23:42:58.0328321Z               "line": 534
2026-06-21T23:42:58.0328396Z             },
2026-06-21T23:42:58.0328473Z             {
2026-06-21T23:42:58.0328597Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T23:42:58.0328678Z               "line": 548
2026-06-21T23:42:58.0328763Z             },
2026-06-21T23:42:58.0328840Z             {
2026-06-21T23:42:58.0329045Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T23:42:58.0329126Z               "line": 603
2026-06-21T23:42:58.0329208Z             },
2026-06-21T23:42:58.0329294Z             {
2026-06-21T23:42:58.0329407Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T23:42:58.0329492Z               "line": 634
2026-06-21T23:42:58.0329573Z             },
2026-06-21T23:42:58.0329654Z             {
2026-06-21T23:42:58.0329780Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-21T23:42:58.0329871Z               "line": 137
2026-06-21T23:42:58.0330062Z             },
2026-06-21T23:42:58.0330142Z             {
2026-06-21T23:42:58.0330277Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-21T23:42:58.0330363Z               "line": 184
2026-06-21T23:42:58.0330447Z             },
2026-06-21T23:42:58.0330530Z             {
2026-06-21T23:42:58.0330653Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T23:42:58.0330744Z               "line": 78
2026-06-21T23:42:58.0330825Z             },
2026-06-21T23:42:58.0330907Z             {
2026-06-21T23:42:58.0331021Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T23:42:58.0331116Z               "line": 114
2026-06-21T23:42:58.0331288Z             },
2026-06-21T23:42:58.0331373Z             {
2026-06-21T23:42:58.0331494Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T23:42:58.0331579Z               "line": 185
2026-06-21T23:42:58.0331664Z             },
2026-06-21T23:42:58.0331745Z             {
2026-06-21T23:42:58.0331856Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T23:42:58.0331940Z               "line": 260
2026-06-21T23:42:58.0332013Z             },
2026-06-21T23:42:58.0332104Z             {
2026-06-21T23:42:58.0332204Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T23:42:58.0332298Z               "line": 292
2026-06-21T23:42:58.0332373Z             },
2026-06-21T23:42:58.0332460Z             {
2026-06-21T23:42:58.0332580Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T23:42:58.0332659Z               "line": 323
2026-06-21T23:42:58.0332740Z             },
2026-06-21T23:42:58.0332813Z             {
2026-06-21T23:42:58.0332941Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T23:42:58.0333022Z               "line": 346
2026-06-21T23:42:58.0333104Z             },
2026-06-21T23:42:58.0333194Z             {
2026-06-21T23:42:58.0333303Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T23:42:58.0333384Z               "line": 388
2026-06-21T23:42:58.0333466Z             },
2026-06-21T23:42:58.0333556Z             {
2026-06-21T23:42:58.0333670Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T23:42:58.0333747Z               "line": 398
2026-06-21T23:42:58.0333833Z             },
2026-06-21T23:42:58.0333905Z             {
2026-06-21T23:42:58.0334029Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T23:42:58.0334115Z               "line": 410
2026-06-21T23:42:58.0334194Z             },
2026-06-21T23:42:58.0337105Z             {
2026-06-21T23:42:58.0337264Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T23:42:58.0337372Z               "line": 420
2026-06-21T23:42:58.0337457Z             },
2026-06-21T23:42:58.0337538Z             {
2026-06-21T23:42:58.0337666Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T23:42:58.0337755Z               "line": 439
2026-06-21T23:42:58.0337840Z             },
2026-06-21T23:42:58.0337922Z             {
2026-06-21T23:42:58.0338046Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T23:42:58.0338131Z               "line": 449
2026-06-21T23:42:58.0338218Z             },
2026-06-21T23:42:58.0338290Z             {
2026-06-21T23:42:58.0338408Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:42:58.0338494Z               "line": 94
2026-06-21T23:42:58.0338576Z             },
2026-06-21T23:42:58.0338657Z             {
2026-06-21T23:42:58.0338766Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:42:58.0338857Z               "line": 120
2026-06-21T23:42:58.0338938Z             },
2026-06-21T23:42:58.0339099Z             {
2026-06-21T23:42:58.0339211Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:42:58.0339295Z               "line": 135
2026-06-21T23:42:58.0339376Z             },
2026-06-21T23:42:58.0339453Z             {
2026-06-21T23:42:58.0339563Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:42:58.0339787Z               "line": 162
2026-06-21T23:42:58.0339873Z             },
2026-06-21T23:42:58.0339967Z             {
2026-06-21T23:42:58.0340071Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:42:58.0340162Z               "line": 174
2026-06-21T23:42:58.0340242Z             },
2026-06-21T23:42:58.0340312Z             {
2026-06-21T23:42:58.0340426Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:42:58.0340513Z               "line": 185
2026-06-21T23:42:58.0340594Z             },
2026-06-21T23:42:58.0340670Z             {
2026-06-21T23:42:58.0340785Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:42:58.0340975Z               "line": 451
2026-06-21T23:42:58.0341061Z             },
2026-06-21T23:42:58.0341142Z             {
2026-06-21T23:42:58.0341252Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:42:58.0341332Z               "line": 573
2026-06-21T23:42:58.0341415Z             },
2026-06-21T23:42:58.0341505Z             {
2026-06-21T23:42:58.0341618Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T23:42:58.0341705Z               "line": 171
2026-06-21T23:42:58.0341786Z             },
2026-06-21T23:42:58.0341867Z             {
2026-06-21T23:42:58.0341976Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T23:42:58.0342064Z               "line": 65
2026-06-21T23:42:58.0342143Z             },
2026-06-21T23:42:58.0342224Z             {
2026-06-21T23:42:58.0342339Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T23:42:58.0342426Z               "line": 71
2026-06-21T23:42:58.0342505Z             },
2026-06-21T23:42:58.0342596Z             {
2026-06-21T23:42:58.0342703Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-21T23:42:58.0342792Z               "line": 77
2026-06-21T23:42:58.0342877Z             },
2026-06-21T23:42:58.0342962Z             {
2026-06-21T23:42:58.0343068Z               "path": "crates/xtask/src/main.rs",
2026-06-21T23:42:58.0343163Z               "line": 778
2026-06-21T23:42:58.0343243Z             },
2026-06-21T23:42:58.0343325Z             {
2026-06-21T23:42:58.0343426Z               "path": "crates/xtask/src/main.rs",
2026-06-21T23:42:58.0343511Z               "line": 795
2026-06-21T23:42:58.0343596Z             },
2026-06-21T23:42:58.0343678Z             {
2026-06-21T23:42:58.0343783Z               "path": "crates/xtask/src/main.rs",
2026-06-21T23:42:58.0343868Z               "line": 838
2026-06-21T23:42:58.0343949Z             },
2026-06-21T23:42:58.0344036Z             {
2026-06-21T23:42:58.0344136Z               "path": "crates/xtask/src/main.rs",
2026-06-21T23:42:58.0344226Z               "line": 981
2026-06-21T23:42:58.0344312Z             },
2026-06-21T23:42:58.0344384Z             {
2026-06-21T23:42:58.0344493Z               "path": "crates/xtask/src/main.rs",
2026-06-21T23:42:58.0344574Z               "line": 1131
2026-06-21T23:42:58.0344661Z             }
2026-06-21T23:42:58.0344741Z           ]
2026-06-21T23:42:58.0344827Z         },
2026-06-21T23:42:58.0344913Z         "int": {
2026-06-21T23:42:58.0344995Z           "complete": true,
2026-06-21T23:42:58.0345084Z           "evidence": [
2026-06-21T23:42:58.0345164Z             {
2026-06-21T23:42:58.0345298Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T23:42:58.0345382Z               "line": 569
2026-06-21T23:42:58.0345457Z             },
2026-06-21T23:42:58.0345543Z             {
2026-06-21T23:42:58.0345663Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-21T23:42:58.0345762Z               "line": 135
2026-06-21T23:42:58.0345848Z             }
2026-06-21T23:42:58.0345920Z           ]
2026-06-21T23:42:58.0346006Z         },
2026-06-21T23:42:58.0346091Z         "unit": {
2026-06-21T23:42:58.0346177Z           "complete": true,
2026-06-21T23:42:58.0346260Z           "evidence": [
2026-06-21T23:42:58.0346345Z             {
2026-06-21T23:42:58.0346468Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T23:42:58.0346645Z               "line": 626
2026-06-21T23:42:58.0346726Z             },
2026-06-21T23:42:58.0346811Z             {
2026-06-21T23:42:58.0346932Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T23:42:58.0347017Z               "line": 675
2026-06-21T23:42:58.0347102Z             },
2026-06-21T23:42:58.0347185Z             {
2026-06-21T23:42:58.0347293Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-21T23:42:58.0347379Z               "line": 696
2026-06-21T23:42:58.0347461Z             },
2026-06-21T23:42:58.0347547Z             {
2026-06-21T23:42:58.0347660Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T23:42:58.0347824Z               "line": 513
2026-06-21T23:42:58.0347909Z             },
2026-06-21T23:42:58.0347988Z             {
2026-06-21T23:42:58.0348103Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T23:42:58.0348194Z               "line": 638
2026-06-21T23:42:58.0348277Z             },
2026-06-21T23:42:58.0348367Z             {
2026-06-21T23:42:58.0348487Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T23:42:58.0348569Z               "line": 675
2026-06-21T23:42:58.0348644Z             },
2026-06-21T23:42:58.0348729Z             {
2026-06-21T23:42:58.0348840Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:42:58.0348926Z               "line": 947
2026-06-21T23:42:58.0349088Z             },
2026-06-21T23:42:58.0349178Z             {
2026-06-21T23:42:58.0349287Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:42:58.0349374Z               "line": 969
2026-06-21T23:42:58.0349489Z             },
2026-06-21T23:42:58.0349574Z             {
2026-06-21T23:42:58.0349683Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:42:58.0349766Z               "line": 986
2026-06-21T23:42:58.0349850Z             },
2026-06-21T23:42:58.0349922Z             {
2026-06-21T23:42:58.0350042Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:42:58.0350137Z               "line": 1001
2026-06-21T23:42:58.0350217Z             },
2026-06-21T23:42:58.0350299Z             {
2026-06-21T23:42:58.0350410Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:42:58.0350494Z               "line": 1027
2026-06-21T23:42:58.0350570Z             },
2026-06-21T23:42:58.0350655Z             {
2026-06-21T23:42:58.0350765Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-21T23:42:58.0350848Z               "line": 457
2026-06-21T23:42:58.0350929Z             },
2026-06-21T23:42:58.0351010Z             {
2026-06-21T23:42:58.0351135Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-21T23:42:58.0351215Z               "line": 338
2026-06-21T23:42:58.0351302Z             },
2026-06-21T23:42:58.0351383Z             {
2026-06-21T23:42:58.0351488Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0351577Z               "line": 10549
2026-06-21T23:42:58.0351650Z             },
2026-06-21T23:42:58.0351740Z             {
2026-06-21T23:42:58.0351845Z               "path": "crates/xtask/src/main.rs",
2026-06-21T23:42:58.0351936Z               "line": 1260
2026-06-21T23:42:58.0352017Z             },
2026-06-21T23:42:58.0352093Z             {
2026-06-21T23:42:58.0352212Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-21T23:42:58.0352299Z               "line": 130
2026-06-21T23:42:58.0352374Z             }
2026-06-21T23:42:58.0352455Z           ]
2026-06-21T23:42:58.0352541Z         }
2026-06-21T23:42:58.0352633Z       }
2026-06-21T23:42:58.0352713Z     },
2026-06-21T23:42:58.0352799Z     {
2026-06-21T23:42:58.0352890Z       "id": "REQ-UPD-7",
2026-06-21T23:42:58.0355105Z       "title": "Origin-source update bootstrap (`spt update fetch`): pull the latest signed release directly from the GitHub release origin (`SaberMage/spt-releases`) — the per-platform artifact + its `<asset>.release.json` SignedRelease metadata — and stage it through the EXISTING verify→stage pipeline (the same `plan_verified` gate: two-key signature + channel + monotonic rollback floor + SHA-256), after which the normal consent-notif / `spt update apply` flow is unchanged. Closes the peer-only-discovery gap (REQ-UPD-1): a first-in-fleet / isolated node can update with no peer to pull from. The signed-release anchor keeps the GitHub transport untrusted-but-verified.",
2026-06-21T23:42:58.0355325Z       "requiredStages": [
2026-06-21T23:42:58.0355410Z         "impl",
2026-06-21T23:42:58.0355493Z         "unit"
2026-06-21T23:42:58.0355564Z       ],
2026-06-21T23:42:58.0355653Z       "stages": {
2026-06-21T23:42:58.0355734Z         "doc": {
2026-06-21T23:42:58.0355815Z           "complete": false,
2026-06-21T23:42:58.0356003Z           "evidence": []
2026-06-21T23:42:58.0356084Z         },
2026-06-21T23:42:58.0356165Z         "impl": {
2026-06-21T23:42:58.0356257Z           "complete": true,
2026-06-21T23:42:58.0356351Z           "evidence": [
2026-06-21T23:42:58.0356437Z             {
2026-06-21T23:42:58.0356547Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0356647Z               "line": 2626
2026-06-21T23:42:58.0356728Z             }
2026-06-21T23:42:58.0356810Z           ]
2026-06-21T23:42:58.0356890Z         },
2026-06-21T23:42:58.0356980Z         "int": {
2026-06-21T23:42:58.0357077Z           "complete": false,
2026-06-21T23:42:58.0357153Z           "evidence": []
2026-06-21T23:42:58.0357234Z         },
2026-06-21T23:42:58.0357309Z         "unit": {
2026-06-21T23:42:58.0357406Z           "complete": true,
2026-06-21T23:42:58.0357487Z           "evidence": [
2026-06-21T23:42:58.0357568Z             {
2026-06-21T23:42:58.0357677Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0357769Z               "line": 10525
2026-06-21T23:42:58.0357854Z             }
2026-06-21T23:42:58.0357935Z           ]
2026-06-21T23:42:58.0358011Z         }
2026-06-21T23:42:58.0358093Z       }
2026-06-21T23:42:58.0358178Z     },
2026-06-21T23:42:58.0358259Z     {
2026-06-21T23:42:58.0358346Z       "id": "REQ-UPD-8",
2026-06-21T23:42:58.0360931Z       "title": "Platform-safe `spt update fetch` + apply platform-guard (v0.3.1 cross-OS brick fix): `spt update fetch` stages the signed multi-platform `SignedUpdateSet` (`update-set.json` + every platform artifact it names), never a platform-blind single `SignedRelease`, so local apply selects `current_platform()` and P2P re-serve lets each peer select ITS own platform. Defense-in-depth: `apply_staged` REFUSES a staged single-release artifact unless it is platform-stamped for THIS node (an unstamped pre-v0.3.2 single, or a single stamped for another OS, fail-safe refuses — the guard that alone prevents the v0.3.1 brick where a Linux ELF was applied as `spt.exe`). UX: a friendly post-apply message (`Updated spt-core to vX.Y.Z.` + changelog URL) driven by an additive `product_version` metadata field, with a release-counter fallback when absent.",
2026-06-21T23:42:58.0361040Z       "requiredStages": [
2026-06-21T23:42:58.0361120Z         "impl",
2026-06-21T23:42:58.0361210Z         "unit"
2026-06-21T23:42:58.0361292Z       ],
2026-06-21T23:42:58.0361381Z       "stages": {
2026-06-21T23:42:58.0361461Z         "doc": {
2026-06-21T23:42:58.0361547Z           "complete": false,
2026-06-21T23:42:58.0361633Z           "evidence": []
2026-06-21T23:42:58.0361714Z         },
2026-06-21T23:42:58.0361804Z         "impl": {
2026-06-21T23:42:58.0361890Z           "complete": true,
2026-06-21T23:42:58.0361981Z           "evidence": [
2026-06-21T23:42:58.0362066Z             {
2026-06-21T23:42:58.0362191Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T23:42:58.0362277Z               "line": 77
2026-06-21T23:42:58.0362358Z             },
2026-06-21T23:42:58.0362448Z             {
2026-06-21T23:42:58.0362568Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T23:42:58.0362653Z               "line": 49
2026-06-21T23:42:58.0362734Z             },
2026-06-21T23:42:58.0362810Z             {
2026-06-21T23:42:58.0362930Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T23:42:58.0363115Z               "line": 152
2026-06-21T23:42:58.0363198Z             },
2026-06-21T23:42:58.0363277Z             {
2026-06-21T23:42:58.0363402Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T23:42:58.0363493Z               "line": 215
2026-06-21T23:42:58.0363569Z             },
2026-06-21T23:42:58.0363649Z             {
2026-06-21T23:42:58.0363760Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T23:42:58.0363847Z               "line": 230
2026-06-21T23:42:58.0363926Z             },
2026-06-21T23:42:58.0364016Z             {
2026-06-21T23:42:58.0364130Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T23:42:58.0364312Z               "line": 247
2026-06-21T23:42:58.0364397Z             },
2026-06-21T23:42:58.0364469Z             {
2026-06-21T23:42:58.0364584Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T23:42:58.0364664Z               "line": 269
2026-06-21T23:42:58.0364746Z             },
2026-06-21T23:42:58.0364827Z             {
2026-06-21T23:42:58.0364936Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:42:58.0365031Z               "line": 66
2026-06-21T23:42:58.0365114Z             },
2026-06-21T23:42:58.0365199Z             {
2026-06-21T23:42:58.0365308Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:42:58.0365389Z               "line": 154
2026-06-21T23:42:58.0365471Z             },
2026-06-21T23:42:58.0365551Z             {
2026-06-21T23:42:58.0365656Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0365734Z               "line": 2430
2026-06-21T23:42:58.0365819Z             },
2026-06-21T23:42:58.0365904Z             {
2026-06-21T23:42:58.0365990Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0366082Z               "line": 2493
2026-06-21T23:42:58.0366161Z             },
2026-06-21T23:42:58.0366246Z             {
2026-06-21T23:42:58.0366346Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0366442Z               "line": 2503
2026-06-21T23:42:58.0366521Z             },
2026-06-21T23:42:58.0366601Z             {
2026-06-21T23:42:58.0366702Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0366788Z               "line": 2510
2026-06-21T23:42:58.0366869Z             },
2026-06-21T23:42:58.0366949Z             {
2026-06-21T23:42:58.0367050Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0367136Z               "line": 2627
2026-06-21T23:42:58.0367217Z             },
2026-06-21T23:42:58.0367293Z             {
2026-06-21T23:42:58.0367517Z               "path": "crates/xtask/src/main.rs",
2026-06-21T23:42:58.0367613Z               "line": 480
2026-06-21T23:42:58.0367689Z             },
2026-06-21T23:42:58.0367770Z             {
2026-06-21T23:42:58.0367879Z               "path": "crates/xtask/src/main.rs",
2026-06-21T23:42:58.0367961Z               "line": 494
2026-06-21T23:42:58.0368042Z             }
2026-06-21T23:42:58.0368123Z           ]
2026-06-21T23:42:58.0368213Z         },
2026-06-21T23:42:58.0368296Z         "int": {
2026-06-21T23:42:58.0368390Z           "complete": false,
2026-06-21T23:42:58.0368466Z           "evidence": []
2026-06-21T23:42:58.0368547Z         },
2026-06-21T23:42:58.0368629Z         "unit": {
2026-06-21T23:42:58.0368714Z           "complete": true,
2026-06-21T23:42:58.0368800Z           "evidence": [
2026-06-21T23:42:58.0368882Z             {
2026-06-21T23:42:58.0369090Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-21T23:42:58.0369180Z               "line": 476
2026-06-21T23:42:58.0369266Z             },
2026-06-21T23:42:58.0369346Z             {
2026-06-21T23:42:58.0369468Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-21T23:42:58.0369545Z               "line": 580
2026-06-21T23:42:58.0369627Z             },
2026-06-21T23:42:58.0369713Z             {
2026-06-21T23:42:58.0369816Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0369913Z               "line": 10527
2026-06-21T23:42:58.0370117Z             },
2026-06-21T23:42:58.0370199Z             {
2026-06-21T23:42:58.0370304Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0370385Z               "line": 10549
2026-06-21T23:42:58.0370465Z             }
2026-06-21T23:42:58.0370542Z           ]
2026-06-21T23:42:58.0370628Z         }
2026-06-21T23:42:58.0370714Z       }
2026-06-21T23:42:58.0370795Z     },
2026-06-21T23:42:58.0370876Z     {
2026-06-21T23:42:58.0370957Z       "id": "REQ-UPD-9",
2026-06-21T23:42:58.0373537Z       "title": "`gh_release` adapter [update] avenue (optional signing): an adapter declares `[update] avenue = \"gh_release\", repo = \"user/repo\"` (+ optional `asset`, default `adapter.spt`; + optional Ed25519 `signing_key`); spt-core's ripple compares the repo's LATEST GitHub release version against the installed adapter version and, when newer, auto-updates by fetching the release `.spt` archive (the REQ-INSTALL-9 `--release` fetch primitive) → verifies the `.spt` against `signing_key` if declared, else HTTPS+GitHub first-acquisition trust → re-extracts + re-registers the adapter root. Lets a harness adapter ship updates from its own GitHub releases with NO signing tooling or plugin coupling (removes the perri file_pull/delegated avenue blockers). Acquisition-trust mirrors `--release` + the installer first-fetch; does not alter spt-core self-update (REQ-UPD-1..8).",
2026-06-21T23:42:58.0373748Z       "requiredStages": [
2026-06-21T23:42:58.0373829Z         "doc",
2026-06-21T23:42:58.0373900Z         "impl",
2026-06-21T23:42:58.0373991Z         "unit"
2026-06-21T23:42:58.0374068Z       ],
2026-06-21T23:42:58.0374148Z       "stages": {
2026-06-21T23:42:58.0374243Z         "doc": {
2026-06-21T23:42:58.0374335Z           "complete": true,
2026-06-21T23:42:58.0374431Z           "evidence": [
2026-06-21T23:42:58.0374519Z             {
2026-06-21T23:42:58.0374618Z               "path": "CONTEXT.md",
2026-06-21T23:42:58.0374705Z               "line": 93
2026-06-21T23:42:58.0374792Z             },
2026-06-21T23:42:58.0374872Z             {
2026-06-21T23:42:58.0374976Z               "path": "docs/MANIFEST.md",
2026-06-21T23:42:58.0375072Z               "line": 285
2026-06-21T23:42:58.0375153Z             }
2026-06-21T23:42:58.0375239Z           ]
2026-06-21T23:42:58.0375320Z         },
2026-06-21T23:42:58.0375401Z         "impl": {
2026-06-21T23:42:58.0375492Z           "complete": true,
2026-06-21T23:42:58.0375586Z           "evidence": [
2026-06-21T23:42:58.0375669Z             {
2026-06-21T23:42:58.0375802Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T23:42:58.0375897Z               "line": 128
2026-06-21T23:42:58.0375984Z             },
2026-06-21T23:42:58.0376073Z             {
2026-06-21T23:42:58.0376192Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:42:58.0376284Z               "line": 533
2026-06-21T23:42:58.0376369Z             },
2026-06-21T23:42:58.0376450Z             {
2026-06-21T23:42:58.0376569Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:42:58.0376661Z               "line": 459
2026-06-21T23:42:58.0376745Z             },
2026-06-21T23:42:58.0376816Z             {
2026-06-21T23:42:58.0376940Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:42:58.0377020Z               "line": 505
2026-06-21T23:42:58.0377105Z             },
2026-06-21T23:42:58.0377185Z             {
2026-06-21T23:42:58.0377295Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:42:58.0377382Z               "line": 928
2026-06-21T23:42:58.0377467Z             },
2026-06-21T23:42:58.0377553Z             {
2026-06-21T23:42:58.0377673Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-21T23:42:58.0377753Z               "line": 302
2026-06-21T23:42:58.0377843Z             },
2026-06-21T23:42:58.0377921Z             {
2026-06-21T23:42:58.0378025Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0378111Z               "line": 5675
2026-06-21T23:42:58.0378278Z             },
2026-06-21T23:42:58.0378364Z             {
2026-06-21T23:42:58.0378458Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0378551Z               "line": 5720
2026-06-21T23:42:58.0378630Z             },
2026-06-21T23:42:58.0378711Z             {
2026-06-21T23:42:58.0378812Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0378898Z               "line": 5857
2026-06-21T23:42:58.0379074Z             },
2026-06-21T23:42:58.0379156Z             {
2026-06-21T23:42:58.0379260Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0379345Z               "line": 5878
2026-06-21T23:42:58.0379427Z             },
2026-06-21T23:42:58.0379603Z             {
2026-06-21T23:42:58.0379712Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0379797Z               "line": 5901
2026-06-21T23:42:58.0379869Z             },
2026-06-21T23:42:58.0379958Z             {
2026-06-21T23:42:58.0380052Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0380153Z               "line": 5928
2026-06-21T23:42:58.0380230Z             }
2026-06-21T23:42:58.0380306Z           ]
2026-06-21T23:42:58.0380386Z         },
2026-06-21T23:42:58.0380468Z         "int": {
2026-06-21T23:42:58.0380563Z           "complete": false,
2026-06-21T23:42:58.0380644Z           "evidence": []
2026-06-21T23:42:58.0380725Z         },
2026-06-21T23:42:58.0380807Z         "unit": {
2026-06-21T23:42:58.0380902Z           "complete": true,
2026-06-21T23:42:58.0380982Z           "evidence": [
2026-06-21T23:42:58.0381063Z             {
2026-06-21T23:42:58.0381193Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-21T23:42:58.0381283Z               "line": 259
2026-06-21T23:42:58.0381374Z             },
2026-06-21T23:42:58.0381451Z             {
2026-06-21T23:42:58.0381554Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-21T23:42:58.0381650Z               "line": 657
2026-06-21T23:42:58.0381733Z             },
2026-06-21T23:42:58.0381823Z             {
2026-06-21T23:42:58.0381937Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-21T23:42:58.0382018Z               "line": 1107
2026-06-21T23:42:58.0382109Z             },
2026-06-21T23:42:58.0382189Z             {
2026-06-21T23:42:58.0382293Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0382379Z               "line": 7565
2026-06-21T23:42:58.0382459Z             }
2026-06-21T23:42:58.0382539Z           ]
2026-06-21T23:42:58.0382624Z         }
2026-06-21T23:42:58.0382705Z       }
2026-06-21T23:42:58.0382787Z     },
2026-06-21T23:42:58.0382867Z     {
2026-06-21T23:42:58.0382986Z       "id": "REQ-VIEWER-SKIP-TO-LIVE-ON-EVICT",
2026-06-21T23:42:58.0388342Z       "title": "A `rc --view` VIEWER that overflows its broker subscription queue and is EVICTED (OutputLog::append try_send Full → viewers.remove, REQ-HAZARD-VIEWER-ISOLATION session-protection) must SKIP TO LIVE, not die silently. ROOT (v0.13.0, b4 JIT item 2 = p0_paste + post-b4 a_journaled-Linux, ONE root): serve_attach forwards each frame (read_event→b64decode→re-encode AttachRecord→net_stream_send) SLOWER than the drain fans out under flood → its VIEWER_CHANNEL_DEPTH(256) channel overflows → the drain evicts (viewers.remove drops the ViewerSink → drops tx → viewer_writer's rx.recv() Err → the writer returns WRITING NOTHING) → serve_attach's brain.read_event() just STOPS getting Output (no EOF, no error) → serve_attach blocks forever → the operator receives nothing (attach_received_output=FALSE). Eviction-of-a-hopelessly-behind-viewer is CORRECT session-protection (keep it); SILENT+PERMANENT eviction is the bug. VIEWER-only → B2-SAFE (a viewer never advances delivered_through / is not authoritative / exposes no resume cursor). FIX (doyle-gated, skip-to-live = tail -f reconnect): (1) explicit broker→viewer EVICTION SIGNAL (KIND_VIEWER_EVICTED, written in the viewer_writer thread OFF the log lock, DISTINCT from session-exit EOF so serve must NOT tear down on it); (2) serve_attach re-subscribes from the CURRENT ring floor (skip-to-live, replays nothing, sees the next live burst) — resetting the cold serve-brain's next_seq so the post-eviction forward-jump replay is accepted (the legacy reject-gap path, brain.rs:618-626, would otherwise FATAL the forward jump); (3) HARD constraint NO evict→resubscribe busy-loop: serve_attach rate-limits re-subscribes (RESUBSCRIBE_INTERVAL) so under max-flood the operator sees intermittent LIVE bursts, never a CPU spin. (v0.13.0)",
2026-06-21T23:42:58.0388571Z       "requiredStages": [
2026-06-21T23:42:58.0388651Z         "doc",
2026-06-21T23:42:58.0388733Z         "impl",
2026-06-21T23:42:58.0388815Z         "unit"
2026-06-21T23:42:58.0389033Z       ],
2026-06-21T23:42:58.0389115Z       "stages": {
2026-06-21T23:42:58.0389195Z         "doc": {
2026-06-21T23:42:58.0389286Z           "complete": true,
2026-06-21T23:42:58.0389362Z           "evidence": [
2026-06-21T23:42:58.0389473Z             {
2026-06-21T23:42:58.0389572Z               "path": "CONTEXT.md",
2026-06-21T23:42:58.0389648Z               "line": 342
2026-06-21T23:42:58.0389735Z             }
2026-06-21T23:42:58.0389806Z           ]
2026-06-21T23:42:58.0389886Z         },
2026-06-21T23:42:58.0389959Z         "impl": {
2026-06-21T23:42:58.0390050Z           "complete": true,
2026-06-21T23:42:58.0390135Z           "evidence": [
2026-06-21T23:42:58.0390225Z             {
2026-06-21T23:42:58.0390343Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-21T23:42:58.0390434Z               "line": 432
2026-06-21T23:42:58.0390518Z             },
2026-06-21T23:42:58.0390598Z             {
2026-06-21T23:42:58.0390718Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T23:42:58.0390799Z               "line": 683
2026-06-21T23:42:58.0390885Z             },
2026-06-21T23:42:58.0390970Z             {
2026-06-21T23:42:58.0391076Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T23:42:58.0391171Z               "line": 859
2026-06-21T23:42:58.0391251Z             },
2026-06-21T23:42:58.0391334Z             {
2026-06-21T23:42:58.0391443Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:42:58.0391528Z               "line": 777
2026-06-21T23:42:58.0391619Z             },
2026-06-21T23:42:58.0391701Z             {
2026-06-21T23:42:58.0391815Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T23:42:58.0391900Z               "line": 788
2026-06-21T23:42:58.0391983Z             }
2026-06-21T23:42:58.0392054Z           ]
2026-06-21T23:42:58.0392138Z         },
2026-06-21T23:42:58.0392224Z         "int": {
2026-06-21T23:42:58.0392316Z           "complete": false,
2026-06-21T23:42:58.0392406Z           "evidence": []
2026-06-21T23:42:58.0392492Z         },
2026-06-21T23:42:58.0392578Z         "unit": {
2026-06-21T23:42:58.0392664Z           "complete": true,
2026-06-21T23:42:58.0392754Z           "evidence": [
2026-06-21T23:42:58.0392834Z             {
2026-06-21T23:42:58.0392934Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T23:42:58.0393033Z               "line": 1448
2026-06-21T23:42:58.0393113Z             },
2026-06-21T23:42:58.0393198Z             {
2026-06-21T23:42:58.0393309Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-21T23:42:58.0393395Z               "line": 1605
2026-06-21T23:42:58.0393475Z             },
2026-06-21T23:42:58.0393556Z             {
2026-06-21T23:42:58.0393680Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:42:58.0393757Z               "line": 2554
2026-06-21T23:42:58.0393842Z             },
2026-06-21T23:42:58.0393929Z             {
2026-06-21T23:42:58.0394038Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-21T23:42:58.0394138Z               "line": 2621
2026-06-21T23:42:58.0394220Z             },
2026-06-21T23:42:58.0394310Z             {
2026-06-21T23:42:58.0394415Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-21T23:42:58.0394500Z               "line": 1002
2026-06-21T23:42:58.0394583Z             }
2026-06-21T23:42:58.0394667Z           ]
2026-06-21T23:42:58.0394859Z         }
2026-06-21T23:42:58.0394944Z       }
2026-06-21T23:42:58.0395030Z     },
2026-06-21T23:42:58.0395101Z     {
2026-06-21T23:42:58.0395198Z       "id": "REQ-WHOAMI-1",
2026-06-21T23:42:58.0396846Z       "title": "`spt whoami` is a thin ALIAS for `spt endpoint list` (full output: the SELF pin + the subnet roster) — the standalone bare-id command is dropped (the `id=$(spt whoami)` capture was never a real pattern: env vars don't persist between agent tool calls). The one new render: the `endpoint list` SELF pin carries the Self endpoint's authored `endpoint description` (info::read_info(...).resources) when present, inline after the liveness state. whoami stays a top-level hot-path verb (parse unchanged, REQ-MSG-9).",
2026-06-21T23:42:58.0397045Z       "requiredStages": [
2026-06-21T23:42:58.0397133Z         "doc",
2026-06-21T23:42:58.0397212Z         "impl",
2026-06-21T23:42:58.0397303Z         "unit"
2026-06-21T23:42:58.0397395Z       ],
2026-06-21T23:42:58.0397476Z       "stages": {
2026-06-21T23:42:58.0397570Z         "doc": {
2026-06-21T23:42:58.0397656Z           "complete": true,
2026-06-21T23:42:58.0397753Z           "evidence": [
2026-06-21T23:42:58.0397833Z             {
2026-06-21T23:42:58.0397941Z               "path": "CONTEXT.md",
2026-06-21T23:42:58.0398037Z               "line": 707
2026-06-21T23:42:58.0398118Z             }
2026-06-21T23:42:58.0398201Z           ]
2026-06-21T23:42:58.0398277Z         },
2026-06-21T23:42:58.0398368Z         "impl": {
2026-06-21T23:42:58.0398445Z           "complete": true,
2026-06-21T23:42:58.0398530Z           "evidence": [
2026-06-21T23:42:58.0398611Z             {
2026-06-21T23:42:58.0398716Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0398817Z               "line": 3190
2026-06-21T23:42:58.0398897Z             },
2026-06-21T23:42:58.0399102Z             {
2026-06-21T23:42:58.0399202Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0399288Z               "line": 3218
2026-06-21T23:42:58.0399375Z             }
2026-06-21T23:42:58.0399451Z           ]
2026-06-21T23:42:58.0399540Z         },
2026-06-21T23:42:58.0399622Z         "int": {
2026-06-21T23:42:58.0399718Z           "complete": false,
2026-06-21T23:42:58.0399794Z           "evidence": []
2026-06-21T23:42:58.0399875Z         },
2026-06-21T23:42:58.0399956Z         "unit": {
2026-06-21T23:42:58.0400047Z           "complete": true,
2026-06-21T23:42:58.0400127Z           "evidence": [
2026-06-21T23:42:58.0400208Z             {
2026-06-21T23:42:58.0400305Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0400385Z               "line": 7847
2026-06-21T23:42:58.0400471Z             },
2026-06-21T23:42:58.0400562Z             {
2026-06-21T23:42:58.0400658Z               "path": "crates/spt/src/cli.rs",
2026-06-21T23:42:58.0400751Z               "line": 7900
2026-06-21T23:42:58.0400823Z             }
2026-06-21T23:42:58.0400908Z           ]
2026-06-21T23:42:58.0400980Z         }
2026-06-21T23:42:58.0401059Z       }
2026-06-21T23:42:58.0401135Z     }
2026-06-21T23:42:58.0401211Z   ],
2026-06-21T23:42:58.0401293Z   "findings": []
2026-06-21T23:42:58.0401365Z }
